Symbol: csi
arch/arm/mach-omap2/control.c
132
u32 csi;
arch/arm/mach-omap2/control.c
405
control_context.csi = omap_ctrl_readl(OMAP343X_CONTROL_CSI);
arch/arm/mach-omap2/control.c
463
omap_ctrl_writel(control_context.csi, OMAP343X_CONTROL_CSI);
drivers/clk/imx/clk-imx31.c
117
clk_set_parent(clk[csi], clk[upll]);
drivers/clk/imx/clk-imx31.c
68
clk[csi] = imx_clk_mux("csi_sel", base + MXC_CCM_CCMR, 25, 1, csi_sel, ARRAY_SIZE(csi_sel));
drivers/edac/dmc520_edac.c
446
struct csrow_info *csi;
drivers/edac/dmc520_edac.c
460
csi = mci->csrows[row];
drivers/edac/dmc520_edac.c
462
for (ch = 0; ch < csi->nr_channels; ch++) {
drivers/edac/dmc520_edac.c
463
dimm = csi->channels[ch]->dimm;
drivers/edac/dmc520_edac.c
468
dimm->nr_pages = pages_per_rank / csi->nr_channels;
drivers/edac/synopsys_edac.c
842
struct csrow_info *csi;
drivers/edac/synopsys_edac.c
850
csi = mci->csrows[row];
drivers/edac/synopsys_edac.c
853
for (j = 0; j < csi->nr_channels; j++) {
drivers/edac/synopsys_edac.c
854
dimm = csi->channels[j]->dimm;
drivers/edac/synopsys_edac.c
857
dimm->nr_pages = (size >> PAGE_SHIFT) / csi->nr_channels;
drivers/edac/versal_edac.c
593
struct csrow_info *csi;
drivers/edac/versal_edac.c
601
csi = mci->csrows[row];
drivers/edac/versal_edac.c
602
for (ch = 0; ch < csi->nr_channels; ch++) {
drivers/edac/versal_edac.c
603
dimm = csi->channels[ch]->dimm;
drivers/edac/versal_edac.c
606
dimm->nr_pages = (size >> PAGE_SHIFT) / csi->nr_channels;
drivers/edac/versalnet_edac.c
477
struct csrow_info *csi;
drivers/edac/versalnet_edac.c
496
csi = mci->csrows[row];
drivers/edac/versalnet_edac.c
497
for (ch = 0; ch < csi->nr_channels; ch++) {
drivers/edac/versalnet_edac.c
498
dimm = csi->channels[ch]->dimm;
drivers/gpu/ipu-v3/ipu-common.c
1065
.csi = 0,
drivers/gpu/ipu-v3/ipu-common.c
1072
.csi = 1,
drivers/gpu/ipu-v3/ipu-csi.c
177
static inline u32 ipu_csi_read(struct ipu_csi *csi, unsigned offset)
drivers/gpu/ipu-v3/ipu-csi.c
179
return readl(csi->base + offset);
drivers/gpu/ipu-v3/ipu-csi.c
182
static inline void ipu_csi_write(struct ipu_csi *csi, u32 value,
drivers/gpu/ipu-v3/ipu-csi.c
185
writel(value, csi->base + offset);
drivers/gpu/ipu-v3/ipu-csi.c
373
ipu_csi_set_bt_interlaced_codes(struct ipu_csi *csi,
drivers/gpu/ipu-v3/ipu-csi.c
404
ipu_csi_write(csi, 0x40596 | CSI_CCIR_ERR_DET_EN,
drivers/gpu/ipu-v3/ipu-csi.c
406
ipu_csi_write(csi, 0xD07DF, CSI_CCIR_CODE_2);
drivers/gpu/ipu-v3/ipu-csi.c
408
dev_dbg(csi->ipu->dev, "capture field swap\n");
drivers/gpu/ipu-v3/ipu-csi.c
411
ipu_csi_write(csi, 0xD07DF | CSI_CCIR_ERR_DET_EN,
drivers/gpu/ipu-v3/ipu-csi.c
413
ipu_csi_write(csi, 0x40596, CSI_CCIR_CODE_2);
drivers/gpu/ipu-v3/ipu-csi.c
416
ipu_csi_write(csi, 0xFF0000, CSI_CCIR_CODE_3);
drivers/gpu/ipu-v3/ipu-csi.c
422
int ipu_csi_init_interface(struct ipu_csi *csi,
drivers/gpu/ipu-v3/ipu-csi.c
456
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
458
ipu_csi_write(csi, data, CSI_SENS_CONF);
drivers/gpu/ipu-v3/ipu-csi.c
464
ipu_csi_write(csi, 0x40030, CSI_CCIR_CODE_1);
drivers/gpu/ipu-v3/ipu-csi.c
465
ipu_csi_write(csi, 0xFF0000, CSI_CCIR_CODE_3);
drivers/gpu/ipu-v3/ipu-csi.c
475
dev_err(csi->ipu->dev,
drivers/gpu/ipu-v3/ipu-csi.c
481
ret = ipu_csi_set_bt_interlaced_codes(csi, infmt, outfmt, std);
drivers/gpu/ipu-v3/ipu-csi.c
489
ipu_csi_write(csi, 0x40030 | CSI_CCIR_ERR_DET_EN,
drivers/gpu/ipu-v3/ipu-csi.c
491
ipu_csi_write(csi, 0xFF0000, CSI_CCIR_CODE_3);
drivers/gpu/ipu-v3/ipu-csi.c
495
ipu_csi_write(csi, 0, CSI_CCIR_CODE_1);
drivers/gpu/ipu-v3/ipu-csi.c
500
ipu_csi_write(csi, (width - 1) | ((height - 1) << 16),
drivers/gpu/ipu-v3/ipu-csi.c
503
dev_dbg(csi->ipu->dev, "CSI_SENS_CONF = 0x%08X\n",
drivers/gpu/ipu-v3/ipu-csi.c
504
ipu_csi_read(csi, CSI_SENS_CONF));
drivers/gpu/ipu-v3/ipu-csi.c
505
dev_dbg(csi->ipu->dev, "CSI_ACT_FRM_SIZE = 0x%08X\n",
drivers/gpu/ipu-v3/ipu-csi.c
506
ipu_csi_read(csi, CSI_ACT_FRM_SIZE));
drivers/gpu/ipu-v3/ipu-csi.c
509
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
515
void ipu_csi_set_window(struct ipu_csi *csi, struct v4l2_rect *w)
drivers/gpu/ipu-v3/ipu-csi.c
520
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
522
ipu_csi_write(csi, (w->width - 1) | ((w->height - 1) << 16),
drivers/gpu/ipu-v3/ipu-csi.c
525
reg = ipu_csi_read(csi, CSI_OUT_FRM_CTRL);
drivers/gpu/ipu-v3/ipu-csi.c
528
ipu_csi_write(csi, reg, CSI_OUT_FRM_CTRL);
drivers/gpu/ipu-v3/ipu-csi.c
530
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
534
void ipu_csi_set_downsize(struct ipu_csi *csi, bool horiz, bool vert)
drivers/gpu/ipu-v3/ipu-csi.c
539
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
541
reg = ipu_csi_read(csi, CSI_OUT_FRM_CTRL);
drivers/gpu/ipu-v3/ipu-csi.c
545
ipu_csi_write(csi, reg, CSI_OUT_FRM_CTRL);
drivers/gpu/ipu-v3/ipu-csi.c
547
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
551
int ipu_csi_set_mipi_datatype(struct ipu_csi *csi, u32 vc,
drivers/gpu/ipu-v3/ipu-csi.c
566
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
568
temp = ipu_csi_read(csi, CSI_MIPI_DI);
drivers/gpu/ipu-v3/ipu-csi.c
571
ipu_csi_write(csi, temp, CSI_MIPI_DI);
drivers/gpu/ipu-v3/ipu-csi.c
573
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
579
int ipu_csi_set_skip_smfc(struct ipu_csi *csi, u32 skip,
drivers/gpu/ipu-v3/ipu-csi.c
588
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
590
temp = ipu_csi_read(csi, CSI_SKIP);
drivers/gpu/ipu-v3/ipu-csi.c
596
ipu_csi_write(csi, temp, CSI_SKIP);
drivers/gpu/ipu-v3/ipu-csi.c
598
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
604
int ipu_csi_set_dest(struct ipu_csi *csi, enum ipu_csi_dest csi_dest)
drivers/gpu/ipu-v3/ipu-csi.c
614
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
616
csi_sens_conf = ipu_csi_read(csi, CSI_SENS_CONF);
drivers/gpu/ipu-v3/ipu-csi.c
619
ipu_csi_write(csi, csi_sens_conf, CSI_SENS_CONF);
drivers/gpu/ipu-v3/ipu-csi.c
621
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
627
int ipu_csi_enable(struct ipu_csi *csi)
drivers/gpu/ipu-v3/ipu-csi.c
629
ipu_module_enable(csi->ipu, csi->module);
drivers/gpu/ipu-v3/ipu-csi.c
635
int ipu_csi_disable(struct ipu_csi *csi)
drivers/gpu/ipu-v3/ipu-csi.c
637
ipu_module_disable(csi->ipu, csi->module);
drivers/gpu/ipu-v3/ipu-csi.c
646
struct ipu_csi *csi, *ret;
drivers/gpu/ipu-v3/ipu-csi.c
651
csi = ipu->csi_priv[id];
drivers/gpu/ipu-v3/ipu-csi.c
652
ret = csi;
drivers/gpu/ipu-v3/ipu-csi.c
654
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
656
if (csi->inuse) {
drivers/gpu/ipu-v3/ipu-csi.c
661
csi->inuse = true;
drivers/gpu/ipu-v3/ipu-csi.c
663
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
668
void ipu_csi_put(struct ipu_csi *csi)
drivers/gpu/ipu-v3/ipu-csi.c
672
spin_lock_irqsave(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
673
csi->inuse = false;
drivers/gpu/ipu-v3/ipu-csi.c
674
spin_unlock_irqrestore(&csi->lock, flags);
drivers/gpu/ipu-v3/ipu-csi.c
681
struct ipu_csi *csi;
drivers/gpu/ipu-v3/ipu-csi.c
686
csi = devm_kzalloc(dev, sizeof(*csi), GFP_KERNEL);
drivers/gpu/ipu-v3/ipu-csi.c
687
if (!csi)
drivers/gpu/ipu-v3/ipu-csi.c
690
ipu->csi_priv[id] = csi;
drivers/gpu/ipu-v3/ipu-csi.c
692
spin_lock_init(&csi->lock);
drivers/gpu/ipu-v3/ipu-csi.c
693
csi->module = module;
drivers/gpu/ipu-v3/ipu-csi.c
694
csi->id = id;
drivers/gpu/ipu-v3/ipu-csi.c
695
csi->clk_ipu = clk_ipu;
drivers/gpu/ipu-v3/ipu-csi.c
696
csi->base = devm_ioremap(dev, base, PAGE_SIZE);
drivers/gpu/ipu-v3/ipu-csi.c
697
if (!csi->base)
drivers/gpu/ipu-v3/ipu-csi.c
701
id, base, csi->base);
drivers/gpu/ipu-v3/ipu-csi.c
702
csi->ipu = ipu;
drivers/gpu/ipu-v3/ipu-csi.c
711
void ipu_csi_dump(struct ipu_csi *csi)
drivers/gpu/ipu-v3/ipu-csi.c
713
dev_dbg(csi->ipu->dev, "CSI_SENS_CONF: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
714
ipu_csi_read(csi, CSI_SENS_CONF));
drivers/gpu/ipu-v3/ipu-csi.c
715
dev_dbg(csi->ipu->dev, "CSI_SENS_FRM_SIZE: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
716
ipu_csi_read(csi, CSI_SENS_FRM_SIZE));
drivers/gpu/ipu-v3/ipu-csi.c
717
dev_dbg(csi->ipu->dev, "CSI_ACT_FRM_SIZE: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
718
ipu_csi_read(csi, CSI_ACT_FRM_SIZE));
drivers/gpu/ipu-v3/ipu-csi.c
719
dev_dbg(csi->ipu->dev, "CSI_OUT_FRM_CTRL: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
720
ipu_csi_read(csi, CSI_OUT_FRM_CTRL));
drivers/gpu/ipu-v3/ipu-csi.c
721
dev_dbg(csi->ipu->dev, "CSI_TST_CTRL: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
722
ipu_csi_read(csi, CSI_TST_CTRL));
drivers/gpu/ipu-v3/ipu-csi.c
723
dev_dbg(csi->ipu->dev, "CSI_CCIR_CODE_1: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
724
ipu_csi_read(csi, CSI_CCIR_CODE_1));
drivers/gpu/ipu-v3/ipu-csi.c
725
dev_dbg(csi->ipu->dev, "CSI_CCIR_CODE_2: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
726
ipu_csi_read(csi, CSI_CCIR_CODE_2));
drivers/gpu/ipu-v3/ipu-csi.c
727
dev_dbg(csi->ipu->dev, "CSI_CCIR_CODE_3: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
728
ipu_csi_read(csi, CSI_CCIR_CODE_3));
drivers/gpu/ipu-v3/ipu-csi.c
729
dev_dbg(csi->ipu->dev, "CSI_MIPI_DI: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
730
ipu_csi_read(csi, CSI_MIPI_DI));
drivers/gpu/ipu-v3/ipu-csi.c
731
dev_dbg(csi->ipu->dev, "CSI_SKIP: %08x\n",
drivers/gpu/ipu-v3/ipu-csi.c
732
ipu_csi_read(csi, CSI_SKIP));
drivers/media/pci/intel/ivsc/mei_csi.c
158
static int mei_csi_send(struct mei_csi *csi, u8 *buf, size_t len)
drivers/media/pci/intel/ivsc/mei_csi.c
163
reinit_completion(&csi->cmd_completion);
drivers/media/pci/intel/ivsc/mei_csi.c
165
ret = mei_cldev_send(csi->cldev, buf, len);
drivers/media/pci/intel/ivsc/mei_csi.c
169
ret = wait_for_completion_killable_timeout(&csi->cmd_completion,
drivers/media/pci/intel/ivsc/mei_csi.c
179
ret = csi->cmd_response.status;
drivers/media/pci/intel/ivsc/mei_csi.c
183
v4l2_ctrl_s_ctrl(csi->privacy_ctrl, 1);
drivers/media/pci/intel/ivsc/mei_csi.c
189
if (csi->cmd_response.cmd_id != cmd->cmd_id)
drivers/media/pci/intel/ivsc/mei_csi.c
197
static int csi_set_link_owner(struct mei_csi *csi, enum csi_link_owner owner)
drivers/media/pci/intel/ivsc/mei_csi.c
207
mutex_lock(&csi->lock);
drivers/media/pci/intel/ivsc/mei_csi.c
209
ret = mei_csi_send(csi, (u8 *)&cmd, cmd_size);
drivers/media/pci/intel/ivsc/mei_csi.c
211
mutex_unlock(&csi->lock);
drivers/media/pci/intel/ivsc/mei_csi.c
217
static int csi_set_link_cfg(struct mei_csi *csi)
drivers/media/pci/intel/ivsc/mei_csi.c
224
cmd.param.conf.nr_of_lanes = csi->nr_of_lanes;
drivers/media/pci/intel/ivsc/mei_csi.c
225
cmd.param.conf.link_freq = CSI_LINK_FREQ(csi->link_freq);
drivers/media/pci/intel/ivsc/mei_csi.c
228
mutex_lock(&csi->lock);
drivers/media/pci/intel/ivsc/mei_csi.c
230
ret = mei_csi_send(csi, (u8 *)&cmd, cmd_size);
drivers/media/pci/intel/ivsc/mei_csi.c
239
mutex_unlock(&csi->lock);
drivers/media/pci/intel/ivsc/mei_csi.c
247
struct mei_csi *csi = mei_cldev_get_drvdata(cldev);
drivers/media/pci/intel/ivsc/mei_csi.c
260
v4l2_ctrl_s_ctrl(csi->privacy_ctrl,
drivers/media/pci/intel/ivsc/mei_csi.c
265
memcpy(&csi->cmd_response, &notif, ret);
drivers/media/pci/intel/ivsc/mei_csi.c
267
complete(&csi->cmd_completion);
drivers/media/pci/intel/ivsc/mei_csi.c
276
struct mei_csi *csi = sd_to_csi(sd);
drivers/media/pci/intel/ivsc/mei_csi.c
278
media_entity_to_v4l2_subdev(csi->remote->entity);
drivers/media/pci/intel/ivsc/mei_csi.c
282
if (enable && csi->streaming == 0) {
drivers/media/pci/intel/ivsc/mei_csi.c
283
freq = v4l2_get_link_freq(csi->remote, 0, 0);
drivers/media/pci/intel/ivsc/mei_csi.c
285
dev_err(&csi->cldev->dev,
drivers/media/pci/intel/ivsc/mei_csi.c
290
csi->link_freq = freq;
drivers/media/pci/intel/ivsc/mei_csi.c
293
ret = csi_set_link_owner(csi, CSI_LINK_HOST);
drivers/media/pci/intel/ivsc/mei_csi.c
298
ret = csi_set_link_cfg(csi);
drivers/media/pci/intel/ivsc/mei_csi.c
305
} else if (!enable && csi->streaming == 1) {
drivers/media/pci/intel/ivsc/mei_csi.c
309
ret = csi_set_link_owner(csi, CSI_LINK_IVSC);
drivers/media/pci/intel/ivsc/mei_csi.c
311
dev_warn(&csi->cldev->dev,
drivers/media/pci/intel/ivsc/mei_csi.c
315
csi->streaming = enable;
drivers/media/pci/intel/ivsc/mei_csi.c
320
csi_set_link_owner(csi, CSI_LINK_IVSC);
drivers/media/pci/intel/ivsc/mei_csi.c
466
struct mei_csi *csi = sd_to_csi(sd);
drivers/media/pci/intel/ivsc/mei_csi.c
473
mbus_config->bus.mipi_csi2.num_data_lanes = csi->nr_of_lanes;
drivers/media/pci/intel/ivsc/mei_csi.c
475
freq = v4l2_get_link_freq(csi->remote, 0, 0);
drivers/media/pci/intel/ivsc/mei_csi.c
477
dev_err(&csi->cldev->dev,
drivers/media/pci/intel/ivsc/mei_csi.c
482
csi->link_freq = freq;
drivers/media/pci/intel/ivsc/mei_csi.c
515
struct mei_csi *csi = notifier_to_csi(notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
523
csi->remote = &subdev->entity.pads[pad];
drivers/media/pci/intel/ivsc/mei_csi.c
526
&csi->subdev.entity, CSI_PAD_SINK,
drivers/media/pci/intel/ivsc/mei_csi.c
535
struct mei_csi *csi = notifier_to_csi(notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
537
csi->remote = NULL;
drivers/media/pci/intel/ivsc/mei_csi.c
545
static int mei_csi_init_controls(struct mei_csi *csi)
drivers/media/pci/intel/ivsc/mei_csi.c
549
mutex_init(&csi->ctrl_lock);
drivers/media/pci/intel/ivsc/mei_csi.c
551
ret = v4l2_ctrl_handler_init(&csi->ctrl_handler, 1);
drivers/media/pci/intel/ivsc/mei_csi.c
555
csi->ctrl_handler.lock = &csi->ctrl_lock;
drivers/media/pci/intel/ivsc/mei_csi.c
557
csi->privacy_ctrl = v4l2_ctrl_new_std(&csi->ctrl_handler, NULL,
drivers/media/pci/intel/ivsc/mei_csi.c
559
if (csi->privacy_ctrl)
drivers/media/pci/intel/ivsc/mei_csi.c
560
csi->privacy_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/pci/intel/ivsc/mei_csi.c
562
if (csi->ctrl_handler.error)
drivers/media/pci/intel/ivsc/mei_csi.c
563
return csi->ctrl_handler.error;
drivers/media/pci/intel/ivsc/mei_csi.c
565
csi->subdev.ctrl_handler = &csi->ctrl_handler;
drivers/media/pci/intel/ivsc/mei_csi.c
570
static int mei_csi_parse_firmware(struct mei_csi *csi)
drivers/media/pci/intel/ivsc/mei_csi.c
575
struct device *dev = &csi->cldev->dev;
drivers/media/pci/intel/ivsc/mei_csi.c
586
v4l2_async_subdev_nf_init(&csi->notifier, &csi->subdev);
drivers/media/pci/intel/ivsc/mei_csi.c
587
csi->notifier.ops = &mei_csi_notify_ops;
drivers/media/pci/intel/ivsc/mei_csi.c
595
csi->nr_of_lanes = v4l2_ep.bus.mipi_csi2.num_data_lanes;
drivers/media/pci/intel/ivsc/mei_csi.c
611
if (csi->nr_of_lanes != v4l2_ep.bus.mipi_csi2.num_data_lanes) {
drivers/media/pci/intel/ivsc/mei_csi.c
615
csi->nr_of_lanes, v4l2_ep.bus.mipi_csi2.num_data_lanes);
drivers/media/pci/intel/ivsc/mei_csi.c
619
asd = v4l2_async_nf_add_fwnode_remote(&csi->notifier, sink_ep,
drivers/media/pci/intel/ivsc/mei_csi.c
626
ret = v4l2_async_nf_register(&csi->notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
635
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
646
struct mei_csi *csi;
drivers/media/pci/intel/ivsc/mei_csi.c
666
csi = devm_kzalloc(dev, sizeof(struct mei_csi), GFP_KERNEL);
drivers/media/pci/intel/ivsc/mei_csi.c
667
if (!csi)
drivers/media/pci/intel/ivsc/mei_csi.c
670
csi->cldev = cldev;
drivers/media/pci/intel/ivsc/mei_csi.c
671
mutex_init(&csi->lock);
drivers/media/pci/intel/ivsc/mei_csi.c
672
init_completion(&csi->cmd_completion);
drivers/media/pci/intel/ivsc/mei_csi.c
674
mei_cldev_set_drvdata(cldev, csi);
drivers/media/pci/intel/ivsc/mei_csi.c
688
ret = mei_csi_parse_firmware(csi);
drivers/media/pci/intel/ivsc/mei_csi.c
692
csi->subdev.dev = &cldev->dev;
drivers/media/pci/intel/ivsc/mei_csi.c
693
csi->subdev.state_lock = &csi->lock;
drivers/media/pci/intel/ivsc/mei_csi.c
694
v4l2_subdev_init(&csi->subdev, &mei_csi_subdev_ops);
drivers/media/pci/intel/ivsc/mei_csi.c
695
csi->subdev.internal_ops = &mei_csi_internal_ops;
drivers/media/pci/intel/ivsc/mei_csi.c
696
v4l2_set_subdevdata(&csi->subdev, csi);
drivers/media/pci/intel/ivsc/mei_csi.c
697
csi->subdev.flags = V4L2_SUBDEV_FL_HAS_DEVNODE |
drivers/media/pci/intel/ivsc/mei_csi.c
699
csi->subdev.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE;
drivers/media/pci/intel/ivsc/mei_csi.c
700
csi->subdev.entity.ops = &mei_csi_entity_ops;
drivers/media/pci/intel/ivsc/mei_csi.c
702
snprintf(csi->subdev.name, sizeof(csi->subdev.name),
drivers/media/pci/intel/ivsc/mei_csi.c
705
ret = mei_csi_init_controls(csi);
drivers/media/pci/intel/ivsc/mei_csi.c
709
csi->pads[CSI_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
drivers/media/pci/intel/ivsc/mei_csi.c
710
csi->pads[CSI_PAD_SINK].flags = MEDIA_PAD_FL_SINK;
drivers/media/pci/intel/ivsc/mei_csi.c
711
ret = media_entity_pads_init(&csi->subdev.entity, CSI_NUM_PADS,
drivers/media/pci/intel/ivsc/mei_csi.c
712
csi->pads);
drivers/media/pci/intel/ivsc/mei_csi.c
716
ret = v4l2_subdev_init_finalize(&csi->subdev);
drivers/media/pci/intel/ivsc/mei_csi.c
720
ret = v4l2_async_register_subdev(&csi->subdev);
drivers/media/pci/intel/ivsc/mei_csi.c
729
v4l2_subdev_cleanup(&csi->subdev);
drivers/media/pci/intel/ivsc/mei_csi.c
732
media_entity_cleanup(&csi->subdev.entity);
drivers/media/pci/intel/ivsc/mei_csi.c
735
v4l2_ctrl_handler_free(&csi->ctrl_handler);
drivers/media/pci/intel/ivsc/mei_csi.c
736
mutex_destroy(&csi->ctrl_lock);
drivers/media/pci/intel/ivsc/mei_csi.c
737
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
738
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
744
mutex_destroy(&csi->lock);
drivers/media/pci/intel/ivsc/mei_csi.c
751
struct mei_csi *csi = mei_cldev_get_drvdata(cldev);
drivers/media/pci/intel/ivsc/mei_csi.c
753
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
754
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/pci/intel/ivsc/mei_csi.c
755
v4l2_ctrl_handler_free(&csi->ctrl_handler);
drivers/media/pci/intel/ivsc/mei_csi.c
756
mutex_destroy(&csi->ctrl_lock);
drivers/media/pci/intel/ivsc/mei_csi.c
757
v4l2_async_unregister_subdev(&csi->subdev);
drivers/media/pci/intel/ivsc/mei_csi.c
758
v4l2_subdev_cleanup(&csi->subdev);
drivers/media/pci/intel/ivsc/mei_csi.c
759
media_entity_cleanup(&csi->subdev.entity);
drivers/media/pci/intel/ivsc/mei_csi.c
765
mutex_destroy(&csi->lock);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
275
static void c3_mipi_csi_write(struct c3_csi_device *csi, u32 reg, u32 val)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
281
addr = csi->aphy + CSI2_REG_ADDR(reg);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
284
addr = csi->dphy + CSI2_REG_ADDR(reg);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
287
addr = csi->host + CSI2_REG_ADDR(reg);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
290
dev_err(csi->dev, "Invalid sub-module: %lu\n", CSI2_SUBMD(reg));
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
297
static void c3_mipi_csi_cfg_aphy(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
299
c3_mipi_csi_write(csi, CSI_PHY_CNTL0,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
310
c3_mipi_csi_write(csi, CSI_PHY_CNTL1,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
319
static void c3_mipi_csi_cfg_dphy(struct c3_csi_device *csi, s64 rate)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
328
c3_mipi_csi_write(csi, MIPI_PHY_CLK_LANE_CTRL,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
335
c3_mipi_csi_write(csi, MIPI_PHY_TCLK_MISS, MIPI_PHY_TCLK_MISS_CYCLES_9);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
336
c3_mipi_csi_write(csi, MIPI_PHY_TCLK_SETTLE,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
338
c3_mipi_csi_write(csi, MIPI_PHY_THS_EXIT, MIPI_PHY_THS_EXIT_CYCLES_8);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
339
c3_mipi_csi_write(csi, MIPI_PHY_THS_SKIP, MIPI_PHY_THS_SKIP_CYCLES_10);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
340
c3_mipi_csi_write(csi, MIPI_PHY_THS_SETTLE, settle);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
341
c3_mipi_csi_write(csi, MIPI_PHY_TINIT, MIPI_PHY_TINIT_CYCLES_20000);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
342
c3_mipi_csi_write(csi, MIPI_PHY_TMBIAS, MIPI_PHY_TMBIAS_CYCLES_256);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
343
c3_mipi_csi_write(csi, MIPI_PHY_TULPS_C, MIPI_PHY_TULPS_C_CYCLES_4096);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
344
c3_mipi_csi_write(csi, MIPI_PHY_TULPS_S, MIPI_PHY_TULPS_S_CYCLES_256);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
345
c3_mipi_csi_write(csi, MIPI_PHY_TLP_EN_W, MIPI_PHY_TLP_EN_W_CYCLES_12);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
346
c3_mipi_csi_write(csi, MIPI_PHY_TLPOK, MIPI_PHY_TLPOK_CYCLES_256);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
347
c3_mipi_csi_write(csi, MIPI_PHY_TWD_INIT,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
349
c3_mipi_csi_write(csi, MIPI_PHY_TWD_HS, MIPI_PHY_TWD_HS_DOG_0X400000);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
351
c3_mipi_csi_write(csi, MIPI_PHY_DATA_LANE_CTRL1,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
358
c3_mipi_csi_write(csi, MIPI_PHY_MUX_CTRL0,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
364
c3_mipi_csi_write(csi, MIPI_PHY_MUX_CTRL1,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
371
c3_mipi_csi_write(csi, MIPI_PHY_CTRL,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
379
static void c3_mipi_csi_cfg_host(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
382
c3_mipi_csi_write(csi, CSI2_HOST_CSI2_RESETN,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
384
c3_mipi_csi_write(csi, CSI2_HOST_CSI2_RESETN,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
388
c3_mipi_csi_write(csi, CSI2_HOST_N_LANES, csi->bus.num_data_lanes - 1);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
391
static int c3_mipi_csi_start_stream(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
396
link_freq = v4l2_get_link_freq(csi->src_pad, 0, 0);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
398
dev_err(csi->dev,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
405
dev_err(csi->dev, "Invalid lane rate: %lld\n", lane_rate);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
409
c3_mipi_csi_cfg_aphy(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
410
c3_mipi_csi_cfg_dphy(csi, lane_rate);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
411
c3_mipi_csi_cfg_host(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
420
struct c3_csi_device *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
425
sink_pad = &csi->pads[C3_MIPI_CSI2_PAD_SINK];
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
426
csi->src_pad = media_pad_remote_pad_unique(sink_pad);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
427
if (IS_ERR(csi->src_pad)) {
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
428
dev_dbg(csi->dev, "Failed to get source pad for MIPI CSI-2\n");
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
432
src_sd = media_entity_to_v4l2_subdev(csi->src_pad->entity);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
434
pm_runtime_resume_and_get(csi->dev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
436
c3_mipi_csi_start_stream(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
438
ret = v4l2_subdev_enable_streams(src_sd, csi->src_pad->index, BIT(0));
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
440
pm_runtime_put(csi->dev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
451
struct c3_csi_device *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
454
if (csi->src_pad) {
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
455
src_sd = media_entity_to_v4l2_subdev(csi->src_pad->entity);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
456
v4l2_subdev_disable_streams(src_sd, csi->src_pad->index,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
459
csi->src_pad = NULL;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
461
pm_runtime_put(csi->dev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
581
struct c3_csi_device *csi = dev_get_drvdata(dev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
583
clk_bulk_disable_unprepare(csi->info->clock_num, csi->clks);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
590
struct c3_csi_device *csi = dev_get_drvdata(dev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
592
return clk_bulk_prepare_enable(csi->info->clock_num, csi->clks);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
604
static int c3_mipi_csi_subdev_init(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
606
struct v4l2_subdev *sd = &csi->sd;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
618
sd->dev = csi->dev;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
619
v4l2_set_subdevdata(sd, csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
621
csi->pads[C3_MIPI_CSI2_PAD_SINK].flags = MEDIA_PAD_FL_SINK;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
622
csi->pads[C3_MIPI_CSI2_PAD_SRC].flags = MEDIA_PAD_FL_SOURCE;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
624
csi->pads);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
637
static void c3_mipi_csi_subdev_deinit(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
639
v4l2_subdev_cleanup(&csi->sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
640
media_entity_cleanup(&csi->sd.entity);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
648
struct c3_csi_device *csi = v4l2_get_subdevdata(notifier->sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
649
struct media_pad *sink = &csi->sd.entity.pads[C3_MIPI_CSI2_PAD_SINK];
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
659
static int c3_mipi_csi_async_register(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
668
v4l2_async_subdev_nf_init(&csi->notifier, &csi->sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
670
ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(csi->dev), 0, 0,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
679
csi->bus = vep.bus.mipi_csi2;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
681
asc = v4l2_async_nf_add_fwnode_remote(&csi->notifier, ep,
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
688
csi->notifier.ops = &c3_mipi_csi_notify_ops;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
689
ret = v4l2_async_nf_register(&csi->notifier);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
693
ret = v4l2_async_register_subdev(&csi->sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
702
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
704
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
710
static void c3_mipi_csi_async_unregister(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
712
v4l2_async_unregister_subdev(&csi->sd);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
713
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
714
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
717
static int c3_mipi_csi_ioremap_resource(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
719
struct device *dev = csi->dev;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
722
csi->aphy = devm_platform_ioremap_resource_byname(pdev, "aphy");
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
723
if (IS_ERR(csi->aphy))
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
724
return PTR_ERR(csi->aphy);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
726
csi->dphy = devm_platform_ioremap_resource_byname(pdev, "dphy");
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
727
if (IS_ERR(csi->dphy))
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
728
return PTR_ERR(csi->dphy);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
730
csi->host = devm_platform_ioremap_resource_byname(pdev, "host");
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
731
if (IS_ERR(csi->host))
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
732
return PTR_ERR(csi->host);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
737
static int c3_mipi_csi_get_clocks(struct c3_csi_device *csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
739
const struct c3_csi_info *info = csi->info;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
742
csi->clks[i].id = info->clocks[i];
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
744
return devm_clk_bulk_get(csi->dev, info->clock_num, csi->clks);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
750
struct c3_csi_device *csi;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
753
csi = devm_kzalloc(dev, sizeof(*csi), GFP_KERNEL);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
754
if (!csi)
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
757
csi->info = of_device_get_match_data(dev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
758
csi->dev = dev;
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
760
ret = c3_mipi_csi_ioremap_resource(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
764
ret = c3_mipi_csi_get_clocks(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
768
platform_set_drvdata(pdev, csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
772
ret = c3_mipi_csi_subdev_init(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
776
ret = c3_mipi_csi_async_register(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
783
c3_mipi_csi_subdev_deinit(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
791
struct c3_csi_device *csi = platform_get_drvdata(pdev);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
793
c3_mipi_csi_async_unregister(csi);
drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
794
c3_mipi_csi_subdev_deinit(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1041
struct imx7_csi *csi = video_drvdata(file);
drivers/media/platform/nxp/imx7-media-csi.c
1046
"platform:%s", dev_name(csi->dev));
drivers/media/platform/nxp/imx7-media-csi.c
1123
struct imx7_csi *csi = video_drvdata(file);
drivers/media/platform/nxp/imx7-media-csi.c
1125
f->fmt.pix = csi->vdev_fmt;
drivers/media/platform/nxp/imx7-media-csi.c
1180
struct imx7_csi *csi = video_drvdata(file);
drivers/media/platform/nxp/imx7-media-csi.c
1183
if (vb2_is_busy(&csi->q)) {
drivers/media/platform/nxp/imx7-media-csi.c
1184
dev_err(csi->dev, "%s queue busy\n", __func__);
drivers/media/platform/nxp/imx7-media-csi.c
1188
cc = __imx7_csi_video_try_fmt(&f->fmt.pix, &csi->vdev_compose);
drivers/media/platform/nxp/imx7-media-csi.c
1190
csi->vdev_cc = cc;
drivers/media/platform/nxp/imx7-media-csi.c
1191
csi->vdev_fmt = f->fmt.pix;
drivers/media/platform/nxp/imx7-media-csi.c
1199
struct imx7_csi *csi = video_drvdata(file);
drivers/media/platform/nxp/imx7-media-csi.c
1209
s->r = csi->vdev_compose;
drivers/media/platform/nxp/imx7-media-csi.c
1219
s->r.width = csi->vdev_fmt.width;
drivers/media/platform/nxp/imx7-media-csi.c
1220
s->r.height = csi->vdev_fmt.height;
drivers/media/platform/nxp/imx7-media-csi.c
1262
struct imx7_csi *csi = vb2_get_drv_priv(vq);
drivers/media/platform/nxp/imx7-media-csi.c
1264
struct v4l2_pix_format *pix = &csi->vdev_fmt;
drivers/media/platform/nxp/imx7-media-csi.c
1301
struct imx7_csi *csi = vb2_get_drv_priv(vb->vb2_queue);
drivers/media/platform/nxp/imx7-media-csi.c
1302
struct v4l2_pix_format *pix = &csi->vdev_fmt;
drivers/media/platform/nxp/imx7-media-csi.c
1305
dev_err(csi->dev,
drivers/media/platform/nxp/imx7-media-csi.c
1316
static bool imx7_csi_fast_track_buffer(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
1324
if (!csi->is_streaming)
drivers/media/platform/nxp/imx7-media-csi.c
1358
spin_lock_irqsave(&csi->irqlock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1360
buf_num = csi->buf_num;
drivers/media/platform/nxp/imx7-media-csi.c
1361
if (csi->active_vb2_buf[buf_num]) {
drivers/media/platform/nxp/imx7-media-csi.c
1362
spin_unlock_irqrestore(&csi->irqlock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1366
imx7_csi_update_buf(csi, dma_addr, buf_num);
drivers/media/platform/nxp/imx7-media-csi.c
1368
isr = imx7_csi_reg_read(csi, CSI_CSISR);
drivers/media/platform/nxp/imx7-media-csi.c
1379
spin_unlock_irqrestore(&csi->irqlock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1383
csi->active_vb2_buf[buf_num] = buf;
drivers/media/platform/nxp/imx7-media-csi.c
1385
spin_unlock_irqrestore(&csi->irqlock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1391
struct imx7_csi *csi = vb2_get_drv_priv(vb->vb2_queue);
drivers/media/platform/nxp/imx7-media-csi.c
1395
if (imx7_csi_fast_track_buffer(csi, buf))
drivers/media/platform/nxp/imx7-media-csi.c
1398
spin_lock_irqsave(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1400
list_add_tail(&buf->list, &csi->ready_q);
drivers/media/platform/nxp/imx7-media-csi.c
1402
spin_unlock_irqrestore(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1405
static int imx7_csi_video_validate_fmt(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
1415
ret = v4l2_subdev_call_state_active(&csi->sd, pad, get_fmt, &fmt_src);
drivers/media/platform/nxp/imx7-media-csi.c
1426
if (csi->vdev_compose.width != fmt_src.format.width ||
drivers/media/platform/nxp/imx7-media-csi.c
1427
csi->vdev_compose.height != fmt_src.format.height)
drivers/media/platform/nxp/imx7-media-csi.c
1435
if (!cc || csi->vdev_cc->yuv != cc->yuv)
drivers/media/platform/nxp/imx7-media-csi.c
1444
struct imx7_csi *csi = vb2_get_drv_priv(vq);
drivers/media/platform/nxp/imx7-media-csi.c
1449
ret = imx7_csi_video_validate_fmt(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1451
dev_err(csi->dev, "capture format not valid\n");
drivers/media/platform/nxp/imx7-media-csi.c
1455
mutex_lock(&csi->mdev.graph_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1457
ret = __video_device_pipeline_start(csi->vdev, &csi->pipe);
drivers/media/platform/nxp/imx7-media-csi.c
1461
ret = v4l2_subdev_call(&csi->sd, video, s_stream, 1);
drivers/media/platform/nxp/imx7-media-csi.c
1465
mutex_unlock(&csi->mdev.graph_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1470
__video_device_pipeline_stop(csi->vdev);
drivers/media/platform/nxp/imx7-media-csi.c
1472
mutex_unlock(&csi->mdev.graph_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1473
dev_err(csi->dev, "pipeline start failed with %d\n", ret);
drivers/media/platform/nxp/imx7-media-csi.c
1475
spin_lock_irqsave(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1476
list_for_each_entry_safe(buf, tmp, &csi->ready_q, list) {
drivers/media/platform/nxp/imx7-media-csi.c
1480
spin_unlock_irqrestore(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1486
struct imx7_csi *csi = vb2_get_drv_priv(vq);
drivers/media/platform/nxp/imx7-media-csi.c
1491
mutex_lock(&csi->mdev.graph_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1492
v4l2_subdev_call(&csi->sd, video, s_stream, 0);
drivers/media/platform/nxp/imx7-media-csi.c
1493
__video_device_pipeline_stop(csi->vdev);
drivers/media/platform/nxp/imx7-media-csi.c
1494
mutex_unlock(&csi->mdev.graph_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1497
spin_lock_irqsave(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1498
list_for_each_entry_safe(frame, tmp, &csi->ready_q, list) {
drivers/media/platform/nxp/imx7-media-csi.c
1502
spin_unlock_irqrestore(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1520
struct imx7_csi *csi = video_drvdata(file);
drivers/media/platform/nxp/imx7-media-csi.c
1523
if (mutex_lock_interruptible(&csi->vdev_mutex))
drivers/media/platform/nxp/imx7-media-csi.c
1528
dev_err(csi->dev, "v4l2_fh_open failed\n");
drivers/media/platform/nxp/imx7-media-csi.c
1532
ret = v4l2_pipeline_pm_get(&csi->vdev->entity);
drivers/media/platform/nxp/imx7-media-csi.c
1537
mutex_unlock(&csi->vdev_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1543
struct imx7_csi *csi = video_drvdata(file);
drivers/media/platform/nxp/imx7-media-csi.c
1544
struct vb2_queue *vq = &csi->q;
drivers/media/platform/nxp/imx7-media-csi.c
1546
mutex_lock(&csi->vdev_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1553
v4l2_pipeline_pm_put(&csi->vdev->entity);
drivers/media/platform/nxp/imx7-media-csi.c
1556
mutex_unlock(&csi->vdev_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1573
static struct imx7_csi_vb2_buffer *imx7_csi_video_next_buf(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
1578
spin_lock_irqsave(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1581
if (!list_empty(&csi->ready_q)) {
drivers/media/platform/nxp/imx7-media-csi.c
1582
buf = list_entry(csi->ready_q.next, struct imx7_csi_vb2_buffer,
drivers/media/platform/nxp/imx7-media-csi.c
1587
spin_unlock_irqrestore(&csi->q_lock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
1592
static void imx7_csi_video_init_format(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
1594
struct v4l2_pix_format *pixfmt = &csi->vdev_fmt;
drivers/media/platform/nxp/imx7-media-csi.c
1599
csi->vdev_cc = __imx7_csi_video_try_fmt(pixfmt, &csi->vdev_compose);
drivers/media/platform/nxp/imx7-media-csi.c
1602
static int imx7_csi_video_register(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
1604
struct v4l2_subdev *sd = &csi->sd;
drivers/media/platform/nxp/imx7-media-csi.c
1606
struct video_device *vdev = csi->vdev;
drivers/media/platform/nxp/imx7-media-csi.c
1612
imx7_csi_video_init_format(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1617
dev_err(csi->dev, "Failed to register video device\n");
drivers/media/platform/nxp/imx7-media-csi.c
1621
dev_info(csi->dev, "Registered %s as /dev/%s\n", vdev->name,
drivers/media/platform/nxp/imx7-media-csi.c
1629
dev_err(csi->dev, "failed to create link to device node\n");
drivers/media/platform/nxp/imx7-media-csi.c
1637
static void imx7_csi_video_unregister(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
1639
media_entity_cleanup(&csi->vdev->entity);
drivers/media/platform/nxp/imx7-media-csi.c
1640
video_unregister_device(csi->vdev);
drivers/media/platform/nxp/imx7-media-csi.c
1643
static int imx7_csi_video_init(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
1649
mutex_init(&csi->vdev_mutex);
drivers/media/platform/nxp/imx7-media-csi.c
1650
INIT_LIST_HEAD(&csi->ready_q);
drivers/media/platform/nxp/imx7-media-csi.c
1651
spin_lock_init(&csi->q_lock);
drivers/media/platform/nxp/imx7-media-csi.c
1666
vdev->lock = &csi->vdev_mutex;
drivers/media/platform/nxp/imx7-media-csi.c
1667
vdev->queue = &csi->q;
drivers/media/platform/nxp/imx7-media-csi.c
1669
snprintf(vdev->name, sizeof(vdev->name), "%s capture", csi->sd.name);
drivers/media/platform/nxp/imx7-media-csi.c
1671
video_set_drvdata(vdev, csi);
drivers/media/platform/nxp/imx7-media-csi.c
1672
csi->vdev = vdev;
drivers/media/platform/nxp/imx7-media-csi.c
1675
csi->vdev_pad.flags = MEDIA_PAD_FL_SINK;
drivers/media/platform/nxp/imx7-media-csi.c
1676
ret = media_entity_pads_init(&vdev->entity, 1, &csi->vdev_pad);
drivers/media/platform/nxp/imx7-media-csi.c
1683
vq = &csi->q;
drivers/media/platform/nxp/imx7-media-csi.c
1686
vq->drv_priv = csi;
drivers/media/platform/nxp/imx7-media-csi.c
1691
vq->lock = &csi->vdev_mutex;
drivers/media/platform/nxp/imx7-media-csi.c
1693
vq->dev = csi->dev;
drivers/media/platform/nxp/imx7-media-csi.c
1697
dev_err(csi->dev, "vb2_queue_init failed\n");
drivers/media/platform/nxp/imx7-media-csi.c
1711
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/nxp/imx7-media-csi.c
1718
ret = imx7_csi_init(csi, sd_state);
drivers/media/platform/nxp/imx7-media-csi.c
1722
ret = v4l2_subdev_call(csi->src_sd, video, s_stream, 1);
drivers/media/platform/nxp/imx7-media-csi.c
1724
imx7_csi_deinit(csi, VB2_BUF_STATE_QUEUED);
drivers/media/platform/nxp/imx7-media-csi.c
1728
imx7_csi_enable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1730
imx7_csi_disable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1732
v4l2_subdev_call(csi->src_sd, video, s_stream, 0);
drivers/media/platform/nxp/imx7-media-csi.c
1734
imx7_csi_deinit(csi, VB2_BUF_STATE_ERROR);
drivers/media/platform/nxp/imx7-media-csi.c
1737
csi->is_streaming = !!enable;
drivers/media/platform/nxp/imx7-media-csi.c
1896
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/nxp/imx7-media-csi.c
1903
if (csi->is_streaming)
drivers/media/platform/nxp/imx7-media-csi.c
1932
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/nxp/imx7-media-csi.c
1945
switch (csi->src_sd->entity.function) {
drivers/media/platform/nxp/imx7-media-csi.c
1948
csi->is_csi2 = true;
drivers/media/platform/nxp/imx7-media-csi.c
1953
for (i = 0; i < csi->src_sd->entity.num_pads; i++) {
drivers/media/platform/nxp/imx7-media-csi.c
1954
struct media_pad *spad = &csi->src_sd->entity.pads[i];
drivers/media/platform/nxp/imx7-media-csi.c
1967
csi->is_csi2 = pad->entity->function == MEDIA_ENT_F_VID_IF_BRIDGE;
drivers/media/platform/nxp/imx7-media-csi.c
1975
csi->is_csi2 = false;
drivers/media/platform/nxp/imx7-media-csi.c
1984
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/nxp/imx7-media-csi.c
1987
ret = imx7_csi_video_init(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1991
ret = imx7_csi_video_register(csi);
drivers/media/platform/nxp/imx7-media-csi.c
1995
ret = v4l2_device_register_subdev_nodes(&csi->v4l2_dev);
drivers/media/platform/nxp/imx7-media-csi.c
1999
ret = media_device_register(&csi->mdev);
drivers/media/platform/nxp/imx7-media-csi.c
2006
imx7_csi_video_unregister(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2012
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
drivers/media/platform/nxp/imx7-media-csi.c
2014
imx7_csi_video_unregister(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2056
struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier);
drivers/media/platform/nxp/imx7-media-csi.c
2057
struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK];
drivers/media/platform/nxp/imx7-media-csi.c
2059
csi->src_sd = sd;
drivers/media/platform/nxp/imx7-media-csi.c
2067
struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier);
drivers/media/platform/nxp/imx7-media-csi.c
2069
return v4l2_device_register_subdev_nodes(&csi->v4l2_dev);
drivers/media/platform/nxp/imx7-media-csi.c
2077
static int imx7_csi_async_register(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
2083
v4l2_async_nf_init(&csi->notifier, &csi->v4l2_dev);
drivers/media/platform/nxp/imx7-media-csi.c
2085
ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(csi->dev), 0, 0,
drivers/media/platform/nxp/imx7-media-csi.c
2088
ret = dev_err_probe(csi->dev, -ENOTCONN,
drivers/media/platform/nxp/imx7-media-csi.c
2093
asd = v4l2_async_nf_add_fwnode_remote(&csi->notifier, ep,
drivers/media/platform/nxp/imx7-media-csi.c
2099
ret = dev_err_probe(csi->dev, PTR_ERR(asd),
drivers/media/platform/nxp/imx7-media-csi.c
2104
csi->notifier.ops = &imx7_csi_notify_ops;
drivers/media/platform/nxp/imx7-media-csi.c
2106
ret = v4l2_async_nf_register(&csi->notifier);
drivers/media/platform/nxp/imx7-media-csi.c
2113
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/nxp/imx7-media-csi.c
2117
static void imx7_csi_media_cleanup(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
2119
v4l2_device_unregister(&csi->v4l2_dev);
drivers/media/platform/nxp/imx7-media-csi.c
2120
media_device_unregister(&csi->mdev);
drivers/media/platform/nxp/imx7-media-csi.c
2121
v4l2_subdev_cleanup(&csi->sd);
drivers/media/platform/nxp/imx7-media-csi.c
2122
media_device_cleanup(&csi->mdev);
drivers/media/platform/nxp/imx7-media-csi.c
2129
static int imx7_csi_media_dev_init(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
2133
strscpy(csi->mdev.model, "imx-media", sizeof(csi->mdev.model));
drivers/media/platform/nxp/imx7-media-csi.c
2134
csi->mdev.ops = &imx7_csi_media_ops;
drivers/media/platform/nxp/imx7-media-csi.c
2135
csi->mdev.dev = csi->dev;
drivers/media/platform/nxp/imx7-media-csi.c
2137
csi->v4l2_dev.mdev = &csi->mdev;
drivers/media/platform/nxp/imx7-media-csi.c
2138
strscpy(csi->v4l2_dev.name, "imx-media",
drivers/media/platform/nxp/imx7-media-csi.c
2139
sizeof(csi->v4l2_dev.name));
drivers/media/platform/nxp/imx7-media-csi.c
2140
snprintf(csi->mdev.bus_info, sizeof(csi->mdev.bus_info),
drivers/media/platform/nxp/imx7-media-csi.c
2141
"platform:%s", dev_name(csi->mdev.dev));
drivers/media/platform/nxp/imx7-media-csi.c
2143
media_device_init(&csi->mdev);
drivers/media/platform/nxp/imx7-media-csi.c
2145
ret = v4l2_device_register(csi->dev, &csi->v4l2_dev);
drivers/media/platform/nxp/imx7-media-csi.c
2147
v4l2_err(&csi->v4l2_dev,
drivers/media/platform/nxp/imx7-media-csi.c
2155
media_device_cleanup(&csi->mdev);
drivers/media/platform/nxp/imx7-media-csi.c
2160
static int imx7_csi_media_init(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
2166
ret = imx7_csi_media_dev_init(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2170
v4l2_subdev_init(&csi->sd, &imx7_csi_subdev_ops);
drivers/media/platform/nxp/imx7-media-csi.c
2171
v4l2_set_subdevdata(&csi->sd, csi);
drivers/media/platform/nxp/imx7-media-csi.c
2172
csi->sd.internal_ops = &imx7_csi_internal_ops;
drivers/media/platform/nxp/imx7-media-csi.c
2173
csi->sd.entity.ops = &imx7_csi_entity_ops;
drivers/media/platform/nxp/imx7-media-csi.c
2174
csi->sd.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE;
drivers/media/platform/nxp/imx7-media-csi.c
2175
csi->sd.dev = csi->dev;
drivers/media/platform/nxp/imx7-media-csi.c
2176
csi->sd.owner = THIS_MODULE;
drivers/media/platform/nxp/imx7-media-csi.c
2177
csi->sd.flags = V4L2_SUBDEV_FL_HAS_DEVNODE;
drivers/media/platform/nxp/imx7-media-csi.c
2178
snprintf(csi->sd.name, sizeof(csi->sd.name), "csi");
drivers/media/platform/nxp/imx7-media-csi.c
2181
csi->pad[i].flags = (i == IMX7_CSI_PAD_SINK) ?
drivers/media/platform/nxp/imx7-media-csi.c
2184
ret = media_entity_pads_init(&csi->sd.entity, IMX7_CSI_PADS_NUM,
drivers/media/platform/nxp/imx7-media-csi.c
2185
csi->pad);
drivers/media/platform/nxp/imx7-media-csi.c
2189
ret = v4l2_subdev_init_finalize(&csi->sd);
drivers/media/platform/nxp/imx7-media-csi.c
2193
ret = v4l2_device_register_subdev(&csi->v4l2_dev, &csi->sd);
drivers/media/platform/nxp/imx7-media-csi.c
2200
imx7_csi_media_cleanup(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2207
struct imx7_csi *csi;
drivers/media/platform/nxp/imx7-media-csi.c
2210
csi = devm_kzalloc(&pdev->dev, sizeof(*csi), GFP_KERNEL);
drivers/media/platform/nxp/imx7-media-csi.c
2211
if (!csi)
drivers/media/platform/nxp/imx7-media-csi.c
2214
csi->dev = dev;
drivers/media/platform/nxp/imx7-media-csi.c
2215
platform_set_drvdata(pdev, csi);
drivers/media/platform/nxp/imx7-media-csi.c
2217
spin_lock_init(&csi->irqlock);
drivers/media/platform/nxp/imx7-media-csi.c
2220
csi->mclk = devm_clk_get(&pdev->dev, "mclk");
drivers/media/platform/nxp/imx7-media-csi.c
2221
if (IS_ERR(csi->mclk))
drivers/media/platform/nxp/imx7-media-csi.c
2222
return dev_err_probe(dev, PTR_ERR(csi->mclk),
drivers/media/platform/nxp/imx7-media-csi.c
2225
csi->irq = platform_get_irq(pdev, 0);
drivers/media/platform/nxp/imx7-media-csi.c
2226
if (csi->irq < 0)
drivers/media/platform/nxp/imx7-media-csi.c
2227
return csi->irq;
drivers/media/platform/nxp/imx7-media-csi.c
2229
csi->regbase = devm_platform_ioremap_resource(pdev, 0);
drivers/media/platform/nxp/imx7-media-csi.c
2230
if (IS_ERR(csi->regbase))
drivers/media/platform/nxp/imx7-media-csi.c
2231
return PTR_ERR(csi->regbase);
drivers/media/platform/nxp/imx7-media-csi.c
2233
csi->model = (enum imx_csi_model)(uintptr_t)of_device_get_match_data(&pdev->dev);
drivers/media/platform/nxp/imx7-media-csi.c
2235
ret = devm_request_irq(dev, csi->irq, imx7_csi_irq_handler, 0, "csi",
drivers/media/platform/nxp/imx7-media-csi.c
2236
(void *)csi);
drivers/media/platform/nxp/imx7-media-csi.c
2241
ret = imx7_csi_media_init(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2245
ret = imx7_csi_async_register(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2252
imx7_csi_media_cleanup(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2259
struct imx7_csi *csi = platform_get_drvdata(pdev);
drivers/media/platform/nxp/imx7-media-csi.c
2261
imx7_csi_media_cleanup(csi);
drivers/media/platform/nxp/imx7-media-csi.c
2263
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/platform/nxp/imx7-media-csi.c
2264
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/nxp/imx7-media-csi.c
2265
v4l2_async_unregister_subdev(&csi->sd);
drivers/media/platform/nxp/imx7-media-csi.c
284
static u32 imx7_csi_reg_read(struct imx7_csi *csi, unsigned int offset)
drivers/media/platform/nxp/imx7-media-csi.c
286
return readl(csi->regbase + offset);
drivers/media/platform/nxp/imx7-media-csi.c
289
static void imx7_csi_reg_write(struct imx7_csi *csi, unsigned int value,
drivers/media/platform/nxp/imx7-media-csi.c
292
writel(value, csi->regbase + offset);
drivers/media/platform/nxp/imx7-media-csi.c
295
static u32 imx7_csi_irq_clear(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
299
isr = imx7_csi_reg_read(csi, CSI_CSISR);
drivers/media/platform/nxp/imx7-media-csi.c
300
imx7_csi_reg_write(csi, isr, CSI_CSISR);
drivers/media/platform/nxp/imx7-media-csi.c
305
static void imx7_csi_init_default(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
307
imx7_csi_reg_write(csi, BIT_SOF_POL | BIT_REDGE | BIT_GCLK_MODE |
drivers/media/platform/nxp/imx7-media-csi.c
310
imx7_csi_reg_write(csi, 0, CSI_CSICR2);
drivers/media/platform/nxp/imx7-media-csi.c
311
imx7_csi_reg_write(csi, BIT_FRMCNT_RST, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
313
imx7_csi_reg_write(csi, BIT_IMAGE_WIDTH(IMX7_CSI_DEF_PIX_WIDTH) |
drivers/media/platform/nxp/imx7-media-csi.c
317
imx7_csi_reg_write(csi, BIT_DMA_REFLASH_RFF, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
320
static void imx7_csi_hw_enable_irq(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
322
u32 cr1 = imx7_csi_reg_read(csi, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
328
imx7_csi_reg_write(csi, cr1, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
331
static void imx7_csi_hw_disable_irq(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
333
u32 cr1 = imx7_csi_reg_read(csi, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
339
imx7_csi_reg_write(csi, cr1, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
342
static void imx7_csi_hw_enable(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
344
u32 cr = imx7_csi_reg_read(csi, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
348
imx7_csi_reg_write(csi, cr, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
351
static void imx7_csi_hw_disable(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
353
u32 cr = imx7_csi_reg_read(csi, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
357
imx7_csi_reg_write(csi, cr, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
360
static void imx7_csi_dma_reflash(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
364
cr3 = imx7_csi_reg_read(csi, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
366
imx7_csi_reg_write(csi, cr3, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
369
static void imx7_csi_rx_fifo_clear(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
371
u32 cr1 = imx7_csi_reg_read(csi, CSI_CSICR1) & ~BIT_FCC;
drivers/media/platform/nxp/imx7-media-csi.c
373
imx7_csi_reg_write(csi, cr1, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
374
imx7_csi_reg_write(csi, cr1 | BIT_CLR_RXFIFO, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
375
imx7_csi_reg_write(csi, cr1 | BIT_FCC, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
378
static void imx7_csi_dmareq_rff_enable(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
380
u32 cr3 = imx7_csi_reg_read(csi, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
387
imx7_csi_reg_write(csi, cr3, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
390
static void imx7_csi_dmareq_rff_disable(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
392
u32 cr3 = imx7_csi_reg_read(csi, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
396
imx7_csi_reg_write(csi, cr3, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
399
static void imx7_csi_update_buf(struct imx7_csi *csi, dma_addr_t dma_addr,
drivers/media/platform/nxp/imx7-media-csi.c
403
imx7_csi_reg_write(csi, dma_addr, CSI_CSIDMASA_FB2);
drivers/media/platform/nxp/imx7-media-csi.c
405
imx7_csi_reg_write(csi, dma_addr, CSI_CSIDMASA_FB1);
drivers/media/platform/nxp/imx7-media-csi.c
408
static struct imx7_csi_vb2_buffer *imx7_csi_video_next_buf(struct imx7_csi *csi);
drivers/media/platform/nxp/imx7-media-csi.c
410
static void imx7_csi_setup_vb2_buf(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
419
buf = imx7_csi_video_next_buf(csi);
drivers/media/platform/nxp/imx7-media-csi.c
421
csi->active_vb2_buf[i] = buf;
drivers/media/platform/nxp/imx7-media-csi.c
425
csi->active_vb2_buf[i] = NULL;
drivers/media/platform/nxp/imx7-media-csi.c
426
dma_addr = csi->underrun_buf.dma_addr;
drivers/media/platform/nxp/imx7-media-csi.c
429
imx7_csi_update_buf(csi, dma_addr, i);
drivers/media/platform/nxp/imx7-media-csi.c
433
static void imx7_csi_dma_unsetup_vb2_buf(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
441
buf = csi->active_vb2_buf[i];
drivers/media/platform/nxp/imx7-media-csi.c
447
csi->active_vb2_buf[i] = NULL;
drivers/media/platform/nxp/imx7-media-csi.c
452
static void imx7_csi_free_dma_buf(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
456
dma_free_coherent(csi->dev, buf->len, buf->virt, buf->dma_addr);
drivers/media/platform/nxp/imx7-media-csi.c
462
static int imx7_csi_alloc_dma_buf(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
465
imx7_csi_free_dma_buf(csi, buf);
drivers/media/platform/nxp/imx7-media-csi.c
468
buf->virt = dma_alloc_coherent(csi->dev, buf->len, &buf->dma_addr,
drivers/media/platform/nxp/imx7-media-csi.c
476
static int imx7_csi_dma_setup(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
480
ret = imx7_csi_alloc_dma_buf(csi, &csi->underrun_buf,
drivers/media/platform/nxp/imx7-media-csi.c
481
csi->vdev_fmt.sizeimage);
drivers/media/platform/nxp/imx7-media-csi.c
483
v4l2_warn(&csi->sd, "consider increasing the CMA area\n");
drivers/media/platform/nxp/imx7-media-csi.c
487
csi->frame_sequence = 0;
drivers/media/platform/nxp/imx7-media-csi.c
488
csi->last_eof = false;
drivers/media/platform/nxp/imx7-media-csi.c
489
init_completion(&csi->last_eof_completion);
drivers/media/platform/nxp/imx7-media-csi.c
491
imx7_csi_setup_vb2_buf(csi);
drivers/media/platform/nxp/imx7-media-csi.c
496
static void imx7_csi_dma_cleanup(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
499
imx7_csi_dma_unsetup_vb2_buf(csi, return_status);
drivers/media/platform/nxp/imx7-media-csi.c
500
imx7_csi_free_dma_buf(csi, &csi->underrun_buf);
drivers/media/platform/nxp/imx7-media-csi.c
503
static void imx7_csi_dma_stop(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
510
spin_lock_irqsave(&csi->irqlock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
511
csi->last_eof = true;
drivers/media/platform/nxp/imx7-media-csi.c
512
spin_unlock_irqrestore(&csi->irqlock, flags);
drivers/media/platform/nxp/imx7-media-csi.c
518
ret = wait_for_completion_timeout(&csi->last_eof_completion,
drivers/media/platform/nxp/imx7-media-csi.c
521
v4l2_warn(&csi->sd, "wait last EOF timeout\n");
drivers/media/platform/nxp/imx7-media-csi.c
523
imx7_csi_hw_disable_irq(csi);
drivers/media/platform/nxp/imx7-media-csi.c
526
static void imx7_csi_configure(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
529
struct v4l2_pix_format *out_pix = &csi->vdev_fmt;
drivers/media/platform/nxp/imx7-media-csi.c
535
cr18 = imx7_csi_reg_read(csi, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
547
if (!csi->is_csi2) {
drivers/media/platform/nxp/imx7-media-csi.c
637
imx7_csi_reg_write(csi, cr1, CSI_CSICR1);
drivers/media/platform/nxp/imx7-media-csi.c
638
imx7_csi_reg_write(csi, BIT_DMA_BURST_TYPE_RFF_INCR16, CSI_CSICR2);
drivers/media/platform/nxp/imx7-media-csi.c
639
imx7_csi_reg_write(csi, cr3, CSI_CSICR3);
drivers/media/platform/nxp/imx7-media-csi.c
640
imx7_csi_reg_write(csi, cr18, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
642
imx7_csi_reg_write(csi, (width * out_pix->height) >> 2, CSI_CSIRXCNT);
drivers/media/platform/nxp/imx7-media-csi.c
643
imx7_csi_reg_write(csi, BIT_IMAGE_WIDTH(width) |
drivers/media/platform/nxp/imx7-media-csi.c
646
imx7_csi_reg_write(csi, stride, CSI_CSIFBUF_PARA);
drivers/media/platform/nxp/imx7-media-csi.c
649
static int imx7_csi_init(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
654
ret = clk_prepare_enable(csi->mclk);
drivers/media/platform/nxp/imx7-media-csi.c
658
imx7_csi_configure(csi, sd_state);
drivers/media/platform/nxp/imx7-media-csi.c
660
ret = imx7_csi_dma_setup(csi);
drivers/media/platform/nxp/imx7-media-csi.c
662
clk_disable_unprepare(csi->mclk);
drivers/media/platform/nxp/imx7-media-csi.c
669
static void imx7_csi_deinit(struct imx7_csi *csi,
drivers/media/platform/nxp/imx7-media-csi.c
672
imx7_csi_dma_cleanup(csi, return_status);
drivers/media/platform/nxp/imx7-media-csi.c
673
imx7_csi_init_default(csi);
drivers/media/platform/nxp/imx7-media-csi.c
674
imx7_csi_dmareq_rff_disable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
675
clk_disable_unprepare(csi->mclk);
drivers/media/platform/nxp/imx7-media-csi.c
678
static void imx7_csi_baseaddr_switch_on_second_frame(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
680
u32 cr18 = imx7_csi_reg_read(csi, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
685
imx7_csi_reg_write(csi, cr18, CSI_CSICR18);
drivers/media/platform/nxp/imx7-media-csi.c
688
static void imx7_csi_enable(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
691
imx7_csi_rx_fifo_clear(csi);
drivers/media/platform/nxp/imx7-media-csi.c
692
imx7_csi_dma_reflash(csi);
drivers/media/platform/nxp/imx7-media-csi.c
697
imx7_csi_irq_clear(csi);
drivers/media/platform/nxp/imx7-media-csi.c
698
imx7_csi_hw_enable_irq(csi);
drivers/media/platform/nxp/imx7-media-csi.c
701
imx7_csi_dmareq_rff_enable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
702
imx7_csi_hw_enable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
704
if (csi->model == IMX7_CSI_IMX8MQ)
drivers/media/platform/nxp/imx7-media-csi.c
705
imx7_csi_baseaddr_switch_on_second_frame(csi);
drivers/media/platform/nxp/imx7-media-csi.c
708
static void imx7_csi_disable(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
710
imx7_csi_dma_stop(csi);
drivers/media/platform/nxp/imx7-media-csi.c
712
imx7_csi_dmareq_rff_disable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
714
imx7_csi_hw_disable_irq(csi);
drivers/media/platform/nxp/imx7-media-csi.c
716
imx7_csi_hw_disable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
723
static void imx7_csi_error_recovery(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
725
imx7_csi_hw_disable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
727
imx7_csi_rx_fifo_clear(csi);
drivers/media/platform/nxp/imx7-media-csi.c
729
imx7_csi_dma_reflash(csi);
drivers/media/platform/nxp/imx7-media-csi.c
731
imx7_csi_hw_enable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
734
static void imx7_csi_vb2_buf_done(struct imx7_csi *csi)
drivers/media/platform/nxp/imx7-media-csi.c
740
done = csi->active_vb2_buf[csi->buf_num];
drivers/media/platform/nxp/imx7-media-csi.c
742
done->vbuf.field = csi->vdev_fmt.field;
drivers/media/platform/nxp/imx7-media-csi.c
743
done->vbuf.sequence = csi->frame_sequence;
drivers/media/platform/nxp/imx7-media-csi.c
748
csi->frame_sequence++;
drivers/media/platform/nxp/imx7-media-csi.c
751
next = imx7_csi_video_next_buf(csi);
drivers/media/platform/nxp/imx7-media-csi.c
754
csi->active_vb2_buf[csi->buf_num] = next;
drivers/media/platform/nxp/imx7-media-csi.c
756
dma_addr = csi->underrun_buf.dma_addr;
drivers/media/platform/nxp/imx7-media-csi.c
757
csi->active_vb2_buf[csi->buf_num] = NULL;
drivers/media/platform/nxp/imx7-media-csi.c
760
imx7_csi_update_buf(csi, dma_addr, csi->buf_num);
drivers/media/platform/nxp/imx7-media-csi.c
765
struct imx7_csi *csi = data;
drivers/media/platform/nxp/imx7-media-csi.c
768
spin_lock(&csi->irqlock);
drivers/media/platform/nxp/imx7-media-csi.c
770
status = imx7_csi_irq_clear(csi);
drivers/media/platform/nxp/imx7-media-csi.c
773
dev_warn(csi->dev, "Rx fifo overflow\n");
drivers/media/platform/nxp/imx7-media-csi.c
774
imx7_csi_error_recovery(csi);
drivers/media/platform/nxp/imx7-media-csi.c
778
dev_warn(csi->dev, "Hresponse error detected\n");
drivers/media/platform/nxp/imx7-media-csi.c
779
imx7_csi_error_recovery(csi);
drivers/media/platform/nxp/imx7-media-csi.c
783
imx7_csi_hw_disable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
785
imx7_csi_dma_reflash(csi);
drivers/media/platform/nxp/imx7-media-csi.c
787
imx7_csi_hw_enable(csi);
drivers/media/platform/nxp/imx7-media-csi.c
801
csi->buf_num = 0;
drivers/media/platform/nxp/imx7-media-csi.c
803
csi->buf_num = 1;
drivers/media/platform/nxp/imx7-media-csi.c
808
imx7_csi_vb2_buf_done(csi);
drivers/media/platform/nxp/imx7-media-csi.c
810
if (csi->last_eof) {
drivers/media/platform/nxp/imx7-media-csi.c
811
complete(&csi->last_eof_completion);
drivers/media/platform/nxp/imx7-media-csi.c
812
csi->last_eof = false;
drivers/media/platform/nxp/imx7-media-csi.c
816
spin_unlock(&csi->irqlock);
drivers/media/platform/renesas/rcar-vin/rcar-core.c
1011
{ .master = 4, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
642
if (route->master == master_id && route->csi == csi_id) {
drivers/media/platform/renesas/rcar-vin/rcar-core.c
673
struct media_entity *source = &group->remotes[route->csi].subdev->entity;
drivers/media/platform/renesas/rcar-vin/rcar-core.c
750
if (!group->remotes[route->csi].subdev)
drivers/media/platform/renesas/rcar-vin/rcar-core.c
920
{ .master = 0, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
921
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
922
{ .master = 4, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
934
{ .master = 0, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
935
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
936
{ .master = 4, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
937
{ .master = 4, .csi = RVIN_CSI41, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
951
{ .master = 0, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
952
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
953
{ .master = 4, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
954
{ .master = 4, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
968
{ .master = 0, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
969
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
970
{ .master = 4, .csi = RVIN_CSI20, .chsel = 0x04 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
971
{ .master = 4, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
985
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
997
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-core.c
998
{ .master = 4, .csi = RVIN_CSI41, .chsel = 0x03 },
drivers/media/platform/renesas/rcar-vin/rcar-dma.c
1530
if (route->csi == RVIN_CSI20 || route->csi == RVIN_CSI21)
drivers/media/platform/renesas/rcar-vin/rcar-vin.h
109
enum rvin_csi_id csi;
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
103
if (cru->csi.asd == asd) {
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
104
cru->csi.subdev = NULL;
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
119
if (cru->csi.asd == asd) {
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
120
cru->csi.subdev = subdev;
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
171
cru->csi.asd = asd;
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
66
source = &cru->csi.subdev->entity;
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
76
cru->ip.remote = cru->csi.subdev;
drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h
155
struct rzg2l_cru_csi csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
524
struct rkisp1_csi csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
113
static void rkisp1_csi_enable(struct rkisp1_csi *csi)
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
115
struct rkisp1_device *rkisp1 = csi->rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
123
static void rkisp1_csi_disable(struct rkisp1_csi *csi)
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
125
struct rkisp1_device *rkisp1 = csi->rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
149
static int rkisp1_csi_start(struct rkisp1_csi *csi,
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
153
struct rkisp1_device *rkisp1 = csi->rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
159
ret = rkisp1_csi_config(csi, sensor, format);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
171
phy_set_mode(csi->dphy, PHY_MODE_MIPI_DPHY);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
172
phy_configure(csi->dphy, &opts);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
173
phy_power_on(csi->dphy);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
175
rkisp1_csi_enable(csi);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
186
static void rkisp1_csi_stop(struct rkisp1_csi *csi)
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
188
rkisp1_csi_disable(csi);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
190
phy_power_off(csi->dphy);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
218
rkisp1->csi.is_dphy_errctrl_disabled = true;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
230
if (rkisp1->csi.is_dphy_errctrl_disabled) {
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
234
rkisp1->csi.is_dphy_errctrl_disabled = false;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
310
struct rkisp1_csi *csi = to_rkisp1_csi(sd);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
330
csi->rkisp1->info->max_width);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
333
csi->rkisp1->info->max_height);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
350
struct rkisp1_csi *csi = to_rkisp1_csi(sd);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
351
struct rkisp1_device *rkisp1 = csi->rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
362
v4l2_subdev_call(csi->source, video, s_stream, false);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
364
rkisp1_csi_stop(csi);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
37
struct rkisp1_csi *csi = &rkisp1->csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
395
ret = rkisp1_csi_start(csi, source_asd, format);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
401
rkisp1_csi_stop(csi);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
405
csi->source = source;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
439
struct rkisp1_csi *csi = &rkisp1->csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
444
csi->rkisp1 = rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
446
sd = &csi->sd;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
455
pads = csi->pads;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
469
ret = v4l2_device_register_subdev(&csi->rkisp1->v4l2_dev, sd);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
481
csi->rkisp1 = NULL;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
487
struct rkisp1_csi *csi = &rkisp1->csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
489
if (!csi->rkisp1)
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
492
v4l2_device_unregister_subdev(&csi->sd);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
493
v4l2_subdev_cleanup(&csi->sd);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
494
media_entity_cleanup(&csi->sd.entity);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
499
struct rkisp1_csi *csi = &rkisp1->csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
50
&csi->sd.entity, RKISP1_CSI_PAD_SINK,
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
501
csi->rkisp1 = rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
503
csi->dphy = devm_phy_get(rkisp1->dev, "dphy");
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
504
if (IS_ERR(csi->dphy))
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
505
return dev_err_probe(rkisp1->dev, PTR_ERR(csi->dphy),
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
508
phy_init(csi->dphy);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
515
struct rkisp1_csi *csi = &rkisp1->csi;
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
517
phy_exit(csi->dphy);
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
53
dev_err(csi->rkisp1->dev, "failed to link src pad of %s\n",
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
61
static int rkisp1_csi_config(struct rkisp1_csi *csi,
drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
65
struct rkisp1_device *rkisp1 = csi->rkisp1;
drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
373
ret = media_create_pad_link(&rkisp1->csi.sd.entity,
drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
950
if (rkisp1->source == &rkisp1->csi.sd) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
102
ret = media_create_pad_link(&csi->src_subdev->entity, csi->src_pad,
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
109
ret = v4l2_device_register_subdev_nodes(&csi->v4l);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
116
media_device_unregister(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
126
static int sun4i_csi_notifier_init(struct sun4i_csi *csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
135
v4l2_async_nf_init(&csi->notifier, &csi->v4l);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
137
ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(csi->dev), 0, 0,
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
146
csi->bus = vep.bus.parallel;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
148
asd = v4l2_async_nf_add_fwnode_remote(&csi->notifier, ep,
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
155
csi->notifier.ops = &sun4i_csi_notify_ops;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
166
struct sun4i_csi *csi;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
170
csi = devm_kzalloc(&pdev->dev, sizeof(*csi), GFP_KERNEL);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
171
if (!csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
173
platform_set_drvdata(pdev, csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
174
csi->dev = &pdev->dev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
175
subdev = &csi->subdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
176
vdev = &csi->vdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
178
csi->traits = of_device_get_match_data(&pdev->dev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
179
if (!csi->traits)
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
182
csi->mdev.dev = csi->dev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
183
strscpy(csi->mdev.model, "Allwinner Video Capture Device",
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
184
sizeof(csi->mdev.model));
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
185
csi->mdev.hw_revision = 0;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
186
media_device_init(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
187
csi->v4l.mdev = &csi->mdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
189
csi->regs = devm_platform_ioremap_resource(pdev, 0);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
190
if (IS_ERR(csi->regs))
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
191
return PTR_ERR(csi->regs);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
197
csi->bus_clk = devm_clk_get(&pdev->dev, "bus");
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
198
if (IS_ERR(csi->bus_clk)) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
200
return PTR_ERR(csi->bus_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
203
if (csi->traits->has_isp) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
204
csi->isp_clk = devm_clk_get(&pdev->dev, "isp");
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
205
if (IS_ERR(csi->isp_clk)) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
207
return PTR_ERR(csi->isp_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
211
csi->ram_clk = devm_clk_get(&pdev->dev, "ram");
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
212
if (IS_ERR(csi->ram_clk)) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
214
return PTR_ERR(csi->ram_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
217
csi->rst = devm_reset_control_get(&pdev->dev, NULL);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
218
if (IS_ERR(csi->rst)) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
220
return PTR_ERR(csi->rst);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
231
v4l2_set_subdevdata(subdev, csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
233
csi->subdev_pads[CSI_SUBDEV_SINK].flags =
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
235
csi->subdev_pads[CSI_SUBDEV_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
237
csi->subdev_pads);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
241
csi->vdev_pad.flags = MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_MUST_CONNECT;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
243
ret = media_entity_pads_init(&vdev->entity, 1, &csi->vdev_pad);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
247
ret = sun4i_csi_dma_register(csi, irq);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
251
ret = sun4i_csi_notifier_init(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
255
ret = v4l2_async_nf_register(&csi->notifier);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
257
dev_err(csi->dev, "Couldn't register our notifier.\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
266
media_device_unregister(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
267
sun4i_csi_dma_unregister(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
270
media_device_cleanup(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
277
struct sun4i_csi *csi = platform_get_drvdata(pdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
280
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
281
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
282
vb2_video_unregister_device(&csi->vdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
283
media_device_unregister(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
284
sun4i_csi_dma_unregister(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
285
media_device_cleanup(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
309
struct sun4i_csi *csi = dev_get_drvdata(dev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
311
reset_control_deassert(csi->rst);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
312
clk_prepare_enable(csi->bus_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
313
clk_prepare_enable(csi->ram_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
314
clk_set_rate(csi->isp_clk, 80000000);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
315
clk_prepare_enable(csi->isp_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
317
writel(1, csi->regs + CSI_EN_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
324
struct sun4i_csi *csi = dev_get_drvdata(dev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
326
clk_disable_unprepare(csi->isp_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
327
clk_disable_unprepare(csi->ram_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
328
clk_disable_unprepare(csi->bus_clk);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
330
reset_control_assert(csi->rst);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
57
struct sun4i_csi *csi = container_of(notifier, struct sun4i_csi,
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
60
csi->src_subdev = subdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
61
csi->src_pad = media_entity_get_fwnode_pad(&subdev->entity,
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
64
if (csi->src_pad < 0) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
65
dev_err(csi->dev, "Couldn't find output pad for subdev %s\n",
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
67
return csi->src_pad;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
70
dev_dbg(csi->dev, "Bound %s pad: %d\n", subdev->name, csi->src_pad);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
76
struct sun4i_csi *csi = container_of(notifier, struct sun4i_csi,
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
78
struct v4l2_subdev *subdev = &csi->subdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
79
struct video_device *vdev = &csi->vdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
82
ret = v4l2_device_register_subdev(&csi->v4l, subdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
86
ret = sun4i_csi_v4l2_register(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c
90
ret = media_device_register(&csi->mdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h
157
int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h
158
void sun4i_csi_dma_unregister(struct sun4i_csi *csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h
160
int sun4i_csi_v4l2_register(struct sun4i_csi *csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
102
for (plane = 0; plane < csi->fmt.num_planes; plane++) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
103
writel(addr, csi->regs + CSI_BUF_ADDR_REG(plane, slot));
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
104
addr += csi->fmt.plane_fmt[plane].sizeimage;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
107
csi->current_buf[slot] = NULL;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
111
static int sun4i_csi_buffer_fill_slot(struct sun4i_csi *csi, unsigned int slot)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
121
if (WARN_ON(csi->current_buf[slot]))
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
124
if (list_empty(&csi->buf_list))
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
125
return sun4i_csi_setup_scratch_buffer(csi, slot);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
127
c_buf = list_first_entry(&csi->buf_list, struct sun4i_csi_buffer, list);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
131
csi->current_buf[slot] = v_buf;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
133
for (plane = 0; plane < csi->fmt.num_planes; plane++) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
138
writel(buf_addr, csi->regs + CSI_BUF_ADDR_REG(plane, slot));
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
144
static int sun4i_csi_buffer_fill_all(struct sun4i_csi *csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
150
ret = sun4i_csi_buffer_fill_slot(csi, slot);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
158
static void sun4i_csi_buffer_mark_done(struct sun4i_csi *csi,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
164
if (!csi->current_buf[slot]) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
165
dev_dbg(csi->dev, "Scratch buffer was used, ignoring..\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
169
v_buf = csi->current_buf[slot];
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
170
v_buf->field = csi->fmt.field;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
175
csi->current_buf[slot] = NULL;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
178
static int sun4i_csi_buffer_flip(struct sun4i_csi *csi, unsigned int sequence)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
180
u32 reg = readl(csi->regs + CSI_BUF_CTRL_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
187
sun4i_csi_buffer_mark_done(csi, next, sequence);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
190
return sun4i_csi_buffer_fill_slot(csi, next);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
195
struct sun4i_csi *csi = vb2_get_drv_priv(vb->vb2_queue);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
199
spin_lock_irqsave(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
200
list_add_tail(&buf->list, &csi->buf_list);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
201
spin_unlock_irqrestore(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
204
static void return_all_buffers(struct sun4i_csi *csi,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
210
list_for_each_entry_safe(buf, node, &csi->buf_list, list) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
216
struct vb2_v4l2_buffer *v_buf = csi->current_buf[slot];
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
222
csi->current_buf[slot] = NULL;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
228
struct sun4i_csi *csi = vb2_get_drv_priv(vq);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
229
struct v4l2_mbus_config_parallel *bus = &csi->bus;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
236
csi_fmt = sun4i_csi_find_format(&csi->fmt.pixelformat, NULL);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
240
dev_dbg(csi->dev, "Starting capture\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
242
csi->sequence = 0;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
255
csi->scratch.size = 0;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
256
for (i = 0; i < csi->fmt.num_planes; i++)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
257
csi->scratch.size += csi->fmt.plane_fmt[i].sizeimage;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
259
csi->scratch.vaddr = dma_alloc_coherent(csi->dev,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
260
csi->scratch.size,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
261
&csi->scratch.paddr,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
263
if (!csi->scratch.vaddr) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
264
dev_err(csi->dev, "Failed to allocate scratch buffer\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
269
ret = video_device_pipeline_alloc_start(&csi->vdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
273
spin_lock_irqsave(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
276
writel(CSI_WIN_CTRL_W_ACTIVE(csi->fmt.width * 2),
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
277
csi->regs + CSI_WIN_CTRL_W_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
278
writel(CSI_WIN_CTRL_H_ACTIVE(csi->fmt.height),
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
279
csi->regs + CSI_WIN_CTRL_H_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
297
csi->regs + CSI_CFG_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
300
writel(csi->fmt.plane_fmt[0].bytesperline,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
301
csi->regs + CSI_BUF_LEN_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
304
ret = sun4i_csi_buffer_fill_all(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
306
spin_unlock_irqrestore(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
311
writel(CSI_BUF_CTRL_DBE, csi->regs + CSI_BUF_CTRL_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
314
writel(CSI_INT_FRM_DONE, csi->regs + CSI_INT_STA_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
317
writel(CSI_INT_FRM_DONE, csi->regs + CSI_INT_EN_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
319
sun4i_csi_capture_start(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
321
spin_unlock_irqrestore(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
323
ret = v4l2_subdev_call(csi->src_subdev, video, s_stream, 1);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
330
sun4i_csi_capture_stop(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
333
video_device_pipeline_stop(&csi->vdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
336
dma_free_coherent(csi->dev, csi->scratch.size, csi->scratch.vaddr,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
337
csi->scratch.paddr);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
340
spin_lock_irqsave(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
341
return_all_buffers(csi, VB2_BUF_STATE_QUEUED);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
342
spin_unlock_irqrestore(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
349
struct sun4i_csi *csi = vb2_get_drv_priv(vq);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
352
dev_dbg(csi->dev, "Stopping capture\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
354
v4l2_subdev_call(csi->src_subdev, video, s_stream, 0);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
355
sun4i_csi_capture_stop(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
358
spin_lock_irqsave(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
359
return_all_buffers(csi, VB2_BUF_STATE_ERROR);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
36
static void sun4i_csi_capture_start(struct sun4i_csi *csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
360
spin_unlock_irqrestore(&csi->qlock, flags);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
362
video_device_pipeline_stop(&csi->vdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
364
dma_free_coherent(csi->dev, csi->scratch.size, csi->scratch.vaddr,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
365
csi->scratch.paddr);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
378
struct sun4i_csi *csi = data;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
38
writel(CSI_CPT_CTRL_VIDEO_START, csi->regs + CSI_CPT_CTRL_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
381
reg = readl(csi->regs + CSI_INT_STA_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
384
writel(reg, csi->regs + CSI_INT_STA_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
389
spin_lock(&csi->qlock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
390
if (sun4i_csi_buffer_flip(csi, csi->sequence++)) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
391
dev_warn(csi->dev, "%s: Flip failed\n", __func__);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
392
sun4i_csi_capture_stop(csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
394
spin_unlock(&csi->qlock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
399
int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
401
struct vb2_queue *q = &csi->queue;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
405
spin_lock_init(&csi->qlock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
406
mutex_init(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
408
INIT_LIST_HEAD(&csi->buf_list);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
41
static void sun4i_csi_capture_stop(struct sun4i_csi *csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
410
csi->current_buf[i] = NULL;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
415
q->lock = &csi->lock;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
416
q->drv_priv = csi;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
421
q->dev = csi->dev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
425
dev_err(csi->dev, "failed to initialize VB2 queue\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
429
ret = v4l2_device_register(csi->dev, &csi->v4l);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
43
writel(0, csi->regs + CSI_CPT_CTRL_REG);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
431
dev_err(csi->dev, "Couldn't register the v4l2 device\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
435
ret = devm_request_irq(csi->dev, irq, sun4i_csi_irq, 0,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
436
dev_name(csi->dev), csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
438
dev_err(csi->dev, "Couldn't register our interrupt\n");
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
445
v4l2_device_unregister(&csi->v4l);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
448
mutex_destroy(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
452
void sun4i_csi_dma_unregister(struct sun4i_csi *csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
454
v4l2_device_unregister(&csi->v4l);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
455
mutex_destroy(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
52
struct sun4i_csi *csi = vb2_get_drv_priv(vq);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
53
unsigned int num_planes = csi->fmt.num_planes;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
61
if (sizes[i] < csi->fmt.plane_fmt[i].sizeimage)
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
68
sizes[i] = csi->fmt.plane_fmt[i].sizeimage;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
75
struct sun4i_csi *csi = vb2_get_drv_priv(vb->vb2_queue);
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
78
for (i = 0; i < csi->fmt.num_planes; i++) {
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
79
unsigned long size = csi->fmt.plane_fmt[i].sizeimage;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
82
dev_err(csi->dev, "buffer too small (%lu < %lu)\n",
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
93
static int sun4i_csi_setup_scratch_buffer(struct sun4i_csi *csi,
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
96
dma_addr_t addr = csi->scratch.paddr;
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c
99
dev_dbg(csi->dev,
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
134
struct sun4i_csi *csi = video_drvdata(file);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
136
_sun4i_csi_try_fmt(csi, &f->fmt.pix_mp);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
144
struct sun4i_csi *csi = video_drvdata(file);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
146
_sun4i_csi_try_fmt(csi, &f->fmt.pix_mp);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
147
csi->fmt = f->fmt.pix_mp;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
155
struct sun4i_csi *csi = video_drvdata(file);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
157
f->fmt.pix_mp = csi->fmt;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
198
struct sun4i_csi *csi = video_drvdata(file);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
201
ret = mutex_lock_interruptible(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
205
ret = pm_runtime_resume_and_get(csi->dev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
209
ret = v4l2_pipeline_pm_get(&csi->vdev.entity);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
217
mutex_unlock(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
222
v4l2_pipeline_pm_put(&csi->vdev.entity);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
225
pm_runtime_put(csi->dev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
228
mutex_unlock(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
235
struct sun4i_csi *csi = video_drvdata(file);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
237
mutex_lock(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
241
v4l2_pipeline_pm_put(&csi->vdev.entity);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
242
pm_runtime_put(csi->dev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
244
mutex_unlock(&csi->lock);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
284
struct sun4i_csi *csi = container_of(subdev, struct sun4i_csi, subdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
290
subdev_fmt = &csi->subdev_fmt;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
301
struct sun4i_csi *csi = container_of(subdev, struct sun4i_csi, subdev);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
307
subdev_fmt = &csi->subdev_fmt;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
350
int sun4i_csi_v4l2_register(struct sun4i_csi *csi)
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
352
struct video_device *vdev = &csi->vdev;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
356
vdev->v4l2_dev = &csi->v4l;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
357
vdev->queue = &csi->queue;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
360
vdev->lock = &csi->lock;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
363
csi->fmt.pixelformat = sun4i_csi_formats[0].fourcc;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
364
csi->fmt.width = CSI_DEFAULT_WIDTH;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
365
csi->fmt.height = CSI_DEFAULT_HEIGHT;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
366
_sun4i_csi_try_fmt(csi, &csi->fmt);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
367
csi->subdev_fmt = sun4i_csi_pad_fmt_default;
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
371
video_set_drvdata(vdev, csi);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
373
ret = video_register_device(&csi->vdev, VFL_TYPE_VIDEO, -1);
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
377
dev_info(csi->dev, "Device registered as %s\n",
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
91
static void _sun4i_csi_try_fmt(struct sun4i_csi *csi,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1001
static int ti_csi2rx_init_dma(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1008
INIT_LIST_HEAD(&csi->dma.queue);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1009
INIT_LIST_HEAD(&csi->dma.submitted);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1010
spin_lock_init(&csi->dma.lock);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1012
csi->dma.state = TI_CSI2RX_DMA_STOPPED;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1014
csi->dma.chan = dma_request_chan(csi->dev, "rx0");
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1015
if (IS_ERR(csi->dma.chan))
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1016
return PTR_ERR(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1018
ret = dmaengine_slave_config(csi->dma.chan, &cfg);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1020
dma_release_channel(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1024
csi->dma.drain.len = DRAIN_BUFFER_SIZE;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1025
csi->dma.drain.vaddr = dma_alloc_coherent(csi->dev, csi->dma.drain.len,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1026
&csi->dma.drain.paddr,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1028
if (!csi->dma.drain.vaddr)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1034
static int ti_csi2rx_v4l2_init(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1036
struct media_device *mdev = &csi->mdev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1037
struct video_device *vdev = &csi->vdev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1039
struct v4l2_pix_format *pix_fmt = &csi->v_fmt.fmt.pix;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1054
ti_csi2rx_fill_fmt(fmt, &csi->v_fmt);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1056
mdev->dev = csi->dev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1063
vdev->v4l2_dev = &csi->v4l2_dev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1070
vdev->lock = &csi->mutex;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1071
video_set_drvdata(vdev, csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1073
csi->pad.flags = MEDIA_PAD_FL_SINK;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1075
ret = media_entity_pads_init(&csi->vdev.entity, 1, &csi->pad);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1079
csi->v4l2_dev.mdev = mdev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1081
ret = v4l2_device_register(csi->dev, &csi->v4l2_dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1087
v4l2_device_unregister(&csi->v4l2_dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1095
static void ti_csi2rx_cleanup_dma(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1097
dma_free_coherent(csi->dev, csi->dma.drain.len,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1098
csi->dma.drain.vaddr, csi->dma.drain.paddr);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1099
csi->dma.drain.vaddr = NULL;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1100
dma_release_channel(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1103
static void ti_csi2rx_cleanup_v4l2(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1105
media_device_unregister(&csi->mdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1106
v4l2_device_unregister(&csi->v4l2_dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1107
media_device_cleanup(&csi->mdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1110
static void ti_csi2rx_cleanup_subdev(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1112
v4l2_async_nf_unregister(&csi->notifier);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1113
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1116
static void ti_csi2rx_cleanup_vb2q(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1118
vb2_queue_release(&csi->vidq);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1123
struct ti_csi2rx_dev *csi;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1126
csi = devm_kzalloc(&pdev->dev, sizeof(*csi), GFP_KERNEL);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1127
if (!csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1130
csi->dev = &pdev->dev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1131
platform_set_drvdata(pdev, csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1133
mutex_init(&csi->mutex);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1134
csi->shim = devm_platform_ioremap_resource(pdev, 0);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1135
if (IS_ERR(csi->shim)) {
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1136
ret = PTR_ERR(csi->shim);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1140
ret = ti_csi2rx_init_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1144
ret = ti_csi2rx_v4l2_init(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1148
ret = ti_csi2rx_init_vb2q(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1152
ret = ti_csi2rx_notifier_register(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1156
ret = devm_of_platform_populate(csi->dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1158
dev_err(csi->dev, "Failed to create children: %d\n", ret);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1165
ti_csi2rx_cleanup_subdev(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1167
ti_csi2rx_cleanup_vb2q(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1169
ti_csi2rx_cleanup_v4l2(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1171
ti_csi2rx_cleanup_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1173
mutex_destroy(&csi->mutex);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1179
struct ti_csi2rx_dev *csi = platform_get_drvdata(pdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1181
video_unregister_device(&csi->vdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1183
ti_csi2rx_cleanup_vb2q(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1184
ti_csi2rx_cleanup_subdev(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1185
ti_csi2rx_cleanup_v4l2(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1186
ti_csi2rx_cleanup_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
1188
mutex_destroy(&csi->mutex);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
222
static int ti_csi2rx_start_dma(struct ti_csi2rx_dev *csi,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
312
struct ti_csi2rx_dev *csi = video_drvdata(file);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
314
*f = csi->v_fmt;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
343
struct ti_csi2rx_dev *csi = video_drvdata(file);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
344
struct vb2_queue *q = &csi->vidq;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
354
csi->v_fmt = *f;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
419
struct ti_csi2rx_dev *csi = dev_get_drvdata(notifier->v4l2_dev->dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
421
csi->source = subdev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
428
struct ti_csi2rx_dev *csi = dev_get_drvdata(notifier->v4l2_dev->dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
429
struct video_device *vdev = &csi->vdev;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
436
ret = media_create_pad_link(&csi->source->entity, CSI2RX_BRIDGE_SOURCE_PAD,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
437
&vdev->entity, csi->pad.index,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
445
ret = v4l2_device_register_subdev_nodes(&csi->v4l2_dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
457
static int ti_csi2rx_notifier_register(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
463
fwnode = fwnode_get_named_child_node(csi->dev->fwnode, "csi-bridge");
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
467
v4l2_async_nf_init(&csi->notifier, &csi->v4l2_dev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
468
csi->notifier.ops = &csi_async_notifier_ops;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
470
asc = v4l2_async_nf_add_fwnode(&csi->notifier, fwnode,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
479
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
483
ret = v4l2_async_nf_register(&csi->notifier);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
485
v4l2_async_nf_cleanup(&csi->notifier);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
493
static void ti_csi2rx_request_max_ppc(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
499
pad = media_entity_remote_source_pad_unique(&csi->vdev.entity);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
503
ret = cdns_csi2rx_negotiate_ppc(csi->source, pad->index, &ppc);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
505
dev_warn(csi->dev, "NUM_PIXELS negotiation failed: %d\n", ret);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
506
csi->pix_per_clk = 1;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
508
csi->pix_per_clk = ppc;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
512
static void ti_csi2rx_setup_shim(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
517
fmt = find_format_by_fourcc(csi->v_fmt.fmt.pix.pixelformat);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
521
writel(reg, csi->shim + SHIM_CNTL);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
524
ti_csi2rx_request_max_ppc(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
555
if (csi->pix_per_clk == 2)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
562
fmt->size + (csi->pix_per_clk >> 1));
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
566
writel(reg, csi->shim + SHIM_DMACNTX);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
570
writel(reg, csi->shim + SHIM_PSI_CFG0);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
591
static int ti_csi2rx_drain_dma(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
600
desc = dmaengine_prep_slave_single(csi->dma.chan, csi->dma.drain.paddr,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
601
csi->dma.drain.len, DMA_DEV_TO_MEM,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
616
dma_async_issue_pending(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
620
dmaengine_terminate_sync(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
621
dev_dbg(csi->dev, "DMA transfer timed out for drain buffer\n");
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
632
struct ti_csi2rx_dev *csi = buf->csi;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
633
struct ti_csi2rx_dma *dma = &csi->dma;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
641
buf->vb.sequence = csi->sequence++;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
653
if (ti_csi2rx_start_dma(csi, buf)) {
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
654
dev_err(csi->dev, "Failed to queue the next buffer for DMA\n");
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
668
static int ti_csi2rx_start_dma(struct ti_csi2rx_dev *csi,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
673
size_t len = csi->v_fmt.fmt.pix.sizeimage;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
678
desc = dmaengine_prep_slave_single(csi->dma.chan, addr, len,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
692
dma_async_issue_pending(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
697
static void ti_csi2rx_stop_dma(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
699
struct ti_csi2rx_dma *dma = &csi->dma;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
705
state = csi->dma.state;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
716
ret = ti_csi2rx_drain_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
718
dev_warn(csi->dev,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
722
ret = dmaengine_terminate_sync(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
724
dev_err(csi->dev, "Failed to stop DMA: %d\n", ret);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
727
static void ti_csi2rx_cleanup_buffers(struct ti_csi2rx_dev *csi,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
73
struct ti_csi2rx_dev *csi;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
730
struct ti_csi2rx_dma *dma = &csi->dma;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
735
list_for_each_entry_safe(buf, tmp, &csi->dma.queue, list) {
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
739
list_for_each_entry_safe(buf, tmp, &csi->dma.submitted, list) {
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
750
struct ti_csi2rx_dev *csi = vb2_get_drv_priv(q);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
751
unsigned int size = csi->v_fmt.fmt.pix.sizeimage;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
767
struct ti_csi2rx_dev *csi = vb2_get_drv_priv(vb->vb2_queue);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
768
unsigned long size = csi->v_fmt.fmt.pix.sizeimage;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
771
dev_err(csi->dev, "Data will not fit into plane\n");
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
781
struct ti_csi2rx_dev *csi = vb2_get_drv_priv(vb->vb2_queue);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
783
struct ti_csi2rx_dma *dma = &csi->dma;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
789
buf->csi = csi;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
818
ret = ti_csi2rx_drain_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
820
dev_warn(csi->dev,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
824
ret = ti_csi2rx_start_dma(csi, buf);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
829
dev_err(csi->dev, "Failed to start DMA: %d\n", ret);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
839
struct ti_csi2rx_dev *csi = vb2_get_drv_priv(vq);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
840
struct ti_csi2rx_dma *dma = &csi->dma;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
852
ret = video_device_pipeline_start(&csi->vdev, &csi->pipe);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
856
ti_csi2rx_setup_shim(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
858
csi->sequence = 0;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
863
ret = ti_csi2rx_start_dma(csi, buf);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
865
dev_err(csi->dev, "Failed to start DMA: %d\n", ret);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
874
ret = v4l2_subdev_call(csi->source, video, s_stream, 1);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
881
ti_csi2rx_stop_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
883
video_device_pipeline_stop(&csi->vdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
884
writel(0, csi->shim + SHIM_CNTL);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
885
writel(0, csi->shim + SHIM_DMACNTX);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
887
ti_csi2rx_cleanup_buffers(csi, VB2_BUF_STATE_QUEUED);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
893
struct ti_csi2rx_dev *csi = vb2_get_drv_priv(vq);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
896
video_device_pipeline_stop(&csi->vdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
898
writel(0, csi->shim + SHIM_CNTL);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
899
writel(0, csi->shim + SHIM_DMACNTX);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
901
ret = v4l2_subdev_call(csi->source, video, s_stream, 0);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
903
dev_err(csi->dev, "Failed to stop subdev stream\n");
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
905
ti_csi2rx_stop_dma(csi);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
906
ti_csi2rx_cleanup_buffers(csi, VB2_BUF_STATE_ERROR);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
917
static int ti_csi2rx_init_vb2q(struct ti_csi2rx_dev *csi)
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
919
struct vb2_queue *q = &csi->vidq;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
924
q->drv_priv = csi;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
929
q->dev = dmaengine_get_dma_device(csi->dma.chan);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
930
q->lock = &csi->mutex;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
938
csi->vdev.queue = q;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
947
struct ti_csi2rx_dev *csi = container_of(vdev, struct ti_csi2rx_dev, vdev);
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
948
struct v4l2_pix_format *csi_fmt = &csi->v_fmt.fmt.pix;
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
956
ret = v4l2_subdev_call_state_active(csi->source, pad,
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
962
dev_dbg(csi->dev, "Width does not match (source %u, sink %u)\n",
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
968
dev_dbg(csi->dev, "Height does not match (source %u, sink %u)\n",
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
975
dev_dbg(csi->dev, "Field does not match (source %u, sink %u)\n",
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
982
dev_dbg(csi->dev, "Media bus format 0x%x not supported\n",
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
988
dev_dbg(csi->dev,
drivers/misc/mei/vsc-fw-loader.c
223
const struct firmware *csi;
drivers/misc/mei/vsc-fw-loader.c
445
fw_loader->csi = image;
drivers/misc/mei/vsc-fw-loader.c
772
release_firmware(fw_loader->csi);
drivers/net/wireless/realtek/rtw89/fw.c
5468
int rtw89_fw_h2c_ra(struct rtw89_dev *rtwdev, struct rtw89_ra_info *ra, bool csi)
drivers/net/wireless/realtek/rtw89/fw.c
5515
if (!csi || ver >= 1)
drivers/net/wireless/realtek/rtw89/fw.h
5272
int rtw89_fw_h2c_ra(struct rtw89_dev *rtwdev, struct rtw89_ra_info *ra, bool csi);
drivers/net/wireless/realtek/rtw89/phy.c
326
bool p2p, bool csi)
drivers/net/wireless/realtek/rtw89/phy.c
492
if (!csi)
drivers/net/wireless/realtek/rtw89/phy.c
738
bool csi;
drivers/net/wireless/realtek/rtw89/phy.c
743
csi = rtw89_sta_has_beamformer_cap(link_sta);
drivers/net/wireless/realtek/rtw89/phy.c
746
link_sta, vif->p2p, csi);
drivers/net/wireless/realtek/rtw89/phy.c
775
rtw89_fw_h2c_ra(rtwdev, ra, csi);
drivers/nvme/host/core.c
1528
memcpy(&ids->csi, data + sizeof(*cur), NVME_NIDT_CSI_LEN);
drivers/nvme/host/core.c
156
u8 lsp, u8 csi, void *log, size_t size, u64 offset, u16 lsi);
drivers/nvme/host/core.c
1911
a->csi == b->csi;
drivers/nvme/host/core.c
1921
.identify.csi = NVME_CSI_NVM,
drivers/nvme/host/core.c
2363
ns->head->ids.csi == NVME_CSI_ZNS) {
drivers/nvme/host/core.c
2389
ns->head->ids.csi == NVME_CSI_ZNS)
drivers/nvme/host/core.c
2455
switch (info->ids.csi) {
drivers/nvme/host/core.c
2472
info->nsid, info->ids.csi);
drivers/nvme/host/core.c
3289
u8 lsp, u8 csi, void *log, size_t size, u64 offset, u16 lsi)
drivers/nvme/host/core.c
3302
c.get_log_page.csi = csi;
drivers/nvme/host/core.c
3308
int nvme_get_log(struct nvme_ctrl *ctrl, u32 nsid, u8 log_page, u8 lsp, u8 csi,
drivers/nvme/host/core.c
3311
return nvme_get_log_lsi(ctrl, nsid, log_page, lsp, csi, log, size,
drivers/nvme/host/core.c
3315
static int nvme_get_effects_log(struct nvme_ctrl *ctrl, u8 csi,
drivers/nvme/host/core.c
3318
struct nvme_effects_log *old, *cel = xa_load(&ctrl->cels, csi);
drivers/nvme/host/core.c
3328
ret = nvme_get_log(ctrl, 0x00, NVME_LOG_CMD_EFFECTS, 0, csi,
drivers/nvme/host/core.c
3335
old = xa_store(&ctrl->cels, csi, cel, GFP_KERNEL);
drivers/nvme/host/core.c
3383
c.identify.csi = NVME_CSI_NVM;
drivers/nvme/host/core.c
3402
u8 csi, struct nvme_effects_log **log)
drivers/nvme/host/core.c
3410
old = xa_store(&ctrl->cels, csi, effects, GFP_KERNEL);
drivers/nvme/host/core.c
3912
if (head->ids.csi) {
drivers/nvme/host/core.c
3913
ret = nvme_get_effects_log(ctrl, head->ids.csi, &head->effects);
drivers/nvme/host/core.c
4310
if (info.ids.csi != NVME_CSI_NVM && !nvme_multi_css(ctrl)) {
drivers/nvme/host/core.c
4322
(info.ids.csi != NVME_CSI_NVM && info.ids.csi != NVME_CSI_ZNS) ||
drivers/nvme/host/multipath.c
751
if (head->ids.csi == NVME_CSI_ZNS)
drivers/nvme/host/nvme.h
514
u8 csi;
drivers/nvme/host/nvme.h
977
int nvme_get_log(struct nvme_ctrl *ctrl, u32 nsid, u8 log_page, u8 lsp, u8 csi,
drivers/nvme/host/sysfs.c
175
return sysfs_emit(buf, "%u\n", dev_to_ns_head(dev)->ids.csi);
drivers/nvme/host/sysfs.c
177
static DEVICE_ATTR_RO(csi);
drivers/nvme/host/zns.c
184
if (ns->head->ids.csi != NVME_CSI_ZNS)
drivers/nvme/host/zns.c
22
c.identify.csi = NVME_CSI_ZNS;
drivers/nvme/host/zns.c
74
c.identify.csi = NVME_CSI_ZNS;
drivers/nvme/target/admin-cmd.c
1027
&req->ns->csi, &off);
drivers/nvme/target/admin-cmd.c
1121
switch (req->cmd->identify.csi) {
drivers/nvme/target/admin-cmd.c
1134
switch (req->cmd->identify.csi) {
drivers/nvme/target/admin-cmd.c
418
switch (req->cmd->get_log_page.csi) {
drivers/nvme/target/admin-cmd.c
965
if (match_css && req->ns->csi != req->cmd->identify.csi)
drivers/nvme/target/core.c
1123
switch (req->ns->csi) {
drivers/nvme/target/core.c
724
ns->csi = NVME_CSI_NVM;
drivers/nvme/target/io-cmd-bdev.c
119
ns->csi = NVME_CSI_ZNS;
drivers/nvme/target/nvmet.h
128
u8 csi;
drivers/nvme/target/passthru.c
40
u8 csi;
drivers/nvme/target/passthru.c
546
switch (req->cmd->identify.csi) {
drivers/nvme/target/passthru.c
560
switch (req->cmd->identify.csi) {
drivers/nvme/target/passthru.c
59
memcpy(&csi, cur + 1, NVME_NIDT_CSI_LEN);
drivers/nvme/target/passthru.c
72
memcpy(cur + 1, &csi, NVME_NIDT_CSI_LEN);
drivers/pinctrl/tegra/pinctrl-tegra124.c
1624
FUNCTION(csi),
drivers/spi/spi-rzv2m-csi.c
114
static void rzv2m_csi_reg_write_bit(const struct rzv2m_csi_priv *csi,
drivers/spi/spi-rzv2m-csi.c
123
tmp = (readl(csi->base + reg_offs) & ~bit_mask) | value;
drivers/spi/spi-rzv2m-csi.c
124
writel(tmp, csi->base + reg_offs);
drivers/spi/spi-rzv2m-csi.c
127
static int rzv2m_csi_sw_reset(struct rzv2m_csi_priv *csi, int assert)
drivers/spi/spi-rzv2m-csi.c
131
rzv2m_csi_reg_write_bit(csi, CSI_CNT, CSI_CNT_CSIRST, assert);
drivers/spi/spi-rzv2m-csi.c
136
return readl_poll_timeout(csi->base + CSI_MODE, reg,
drivers/spi/spi-rzv2m-csi.c
141
static int rzv2m_csi_start_stop_operation(const struct rzv2m_csi_priv *csi,
drivers/spi/spi-rzv2m-csi.c
146
rzv2m_csi_reg_write_bit(csi, CSI_MODE, CSI_MODE_CSIE, enable);
drivers/spi/spi-rzv2m-csi.c
151
return readl_poll_timeout(csi->base + CSI_MODE, reg,
drivers/spi/spi-rzv2m-csi.c
156
static int rzv2m_csi_fill_txfifo(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
160
if (readl(csi->base + CSI_OFIFOL))
drivers/spi/spi-rzv2m-csi.c
163
if (csi->bytes_per_word == 2) {
drivers/spi/spi-rzv2m-csi.c
164
const u16 *buf = csi->txbuf;
drivers/spi/spi-rzv2m-csi.c
166
for (i = 0; i < csi->words_to_transfer; i++)
drivers/spi/spi-rzv2m-csi.c
167
writel(buf[i], csi->base + CSI_OFIFO);
drivers/spi/spi-rzv2m-csi.c
169
const u8 *buf = csi->txbuf;
drivers/spi/spi-rzv2m-csi.c
171
for (i = 0; i < csi->words_to_transfer; i++)
drivers/spi/spi-rzv2m-csi.c
172
writel(buf[i], csi->base + CSI_OFIFO);
drivers/spi/spi-rzv2m-csi.c
175
csi->txbuf += csi->bytes_to_transfer;
drivers/spi/spi-rzv2m-csi.c
176
csi->bytes_sent += csi->bytes_to_transfer;
drivers/spi/spi-rzv2m-csi.c
181
static int rzv2m_csi_read_rxfifo(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
185
if (readl(csi->base + CSI_IFIFOL) != csi->bytes_to_transfer)
drivers/spi/spi-rzv2m-csi.c
188
if (csi->bytes_per_word == 2) {
drivers/spi/spi-rzv2m-csi.c
189
u16 *buf = csi->rxbuf;
drivers/spi/spi-rzv2m-csi.c
191
for (i = 0; i < csi->words_to_transfer; i++)
drivers/spi/spi-rzv2m-csi.c
192
buf[i] = (u16)readl(csi->base + CSI_IFIFO);
drivers/spi/spi-rzv2m-csi.c
194
u8 *buf = csi->rxbuf;
drivers/spi/spi-rzv2m-csi.c
196
for (i = 0; i < csi->words_to_transfer; i++)
drivers/spi/spi-rzv2m-csi.c
197
buf[i] = (u8)readl(csi->base + CSI_IFIFO);
drivers/spi/spi-rzv2m-csi.c
200
csi->rxbuf += csi->bytes_to_transfer;
drivers/spi/spi-rzv2m-csi.c
201
csi->bytes_received += csi->bytes_to_transfer;
drivers/spi/spi-rzv2m-csi.c
206
static inline void rzv2m_csi_empty_rxfifo(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
210
for (i = 0; i < csi->words_to_transfer; i++)
drivers/spi/spi-rzv2m-csi.c
211
readl(csi->base + CSI_IFIFO);
drivers/spi/spi-rzv2m-csi.c
214
static inline void rzv2m_csi_calc_current_transfer(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
216
unsigned int bytes_transferred = max(csi->bytes_received, csi->bytes_sent);
drivers/spi/spi-rzv2m-csi.c
217
unsigned int bytes_remaining = csi->buffer_len - bytes_transferred;
drivers/spi/spi-rzv2m-csi.c
220
if (csi->txbuf)
drivers/spi/spi-rzv2m-csi.c
230
if (csi->bytes_per_word == 2)
drivers/spi/spi-rzv2m-csi.c
239
csi->words_to_transfer = rounddown_pow_of_two(to_transfer);
drivers/spi/spi-rzv2m-csi.c
241
if (csi->bytes_per_word == 2)
drivers/spi/spi-rzv2m-csi.c
242
csi->bytes_to_transfer = csi->words_to_transfer << 1;
drivers/spi/spi-rzv2m-csi.c
244
csi->bytes_to_transfer = csi->words_to_transfer;
drivers/spi/spi-rzv2m-csi.c
247
static inline void rzv2m_csi_set_rx_fifo_trigger_level(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
249
rzv2m_csi_reg_write_bit(csi, CSI_FIFOTRG, CSI_FIFOTRG_R_TRG,
drivers/spi/spi-rzv2m-csi.c
250
ilog2(csi->words_to_transfer));
drivers/spi/spi-rzv2m-csi.c
253
static inline void rzv2m_csi_enable_rx_trigger(struct rzv2m_csi_priv *csi,
drivers/spi/spi-rzv2m-csi.c
256
rzv2m_csi_reg_write_bit(csi, CSI_CNT, CSI_CNT_R_TRGEN, enable);
drivers/spi/spi-rzv2m-csi.c
259
static void rzv2m_csi_disable_irqs(const struct rzv2m_csi_priv *csi,
drivers/spi/spi-rzv2m-csi.c
262
u32 cnt = readl(csi->base + CSI_CNT);
drivers/spi/spi-rzv2m-csi.c
264
writel(cnt & ~enable_bits, csi->base + CSI_CNT);
drivers/spi/spi-rzv2m-csi.c
267
static void rzv2m_csi_disable_all_irqs(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
269
rzv2m_csi_disable_irqs(csi, CSI_CNT_R_TRGR_E | CSI_CNT_T_TRGR_E |
drivers/spi/spi-rzv2m-csi.c
274
static inline void rzv2m_csi_clear_irqs(struct rzv2m_csi_priv *csi, u32 irqs)
drivers/spi/spi-rzv2m-csi.c
276
writel(irqs, csi->base + CSI_INT);
drivers/spi/spi-rzv2m-csi.c
279
static void rzv2m_csi_clear_all_irqs(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
281
rzv2m_csi_clear_irqs(csi, CSI_INT_UNDER | CSI_INT_OVERF |
drivers/spi/spi-rzv2m-csi.c
286
static void rzv2m_csi_enable_irqs(struct rzv2m_csi_priv *csi, u32 enable_bits)
drivers/spi/spi-rzv2m-csi.c
288
u32 cnt = readl(csi->base + CSI_CNT);
drivers/spi/spi-rzv2m-csi.c
290
writel(cnt | enable_bits, csi->base + CSI_CNT);
drivers/spi/spi-rzv2m-csi.c
293
static int rzv2m_csi_wait_for_interrupt(struct rzv2m_csi_priv *csi,
drivers/spi/spi-rzv2m-csi.c
298
rzv2m_csi_enable_irqs(csi, enable_bits);
drivers/spi/spi-rzv2m-csi.c
300
if (spi_controller_is_target(csi->controller)) {
drivers/spi/spi-rzv2m-csi.c
301
ret = wait_event_interruptible(csi->wait,
drivers/spi/spi-rzv2m-csi.c
302
((csi->status & wait_mask) == wait_mask) ||
drivers/spi/spi-rzv2m-csi.c
303
csi->errors || csi->target_aborted);
drivers/spi/spi-rzv2m-csi.c
304
if (ret || csi->target_aborted)
drivers/spi/spi-rzv2m-csi.c
307
ret = wait_event_timeout(csi->wait,
drivers/spi/spi-rzv2m-csi.c
308
((csi->status & wait_mask) == wait_mask) ||
drivers/spi/spi-rzv2m-csi.c
309
csi->errors, HZ) == 0 ? -ETIMEDOUT : 0;
drivers/spi/spi-rzv2m-csi.c
312
rzv2m_csi_disable_irqs(csi, enable_bits);
drivers/spi/spi-rzv2m-csi.c
314
if (csi->errors)
drivers/spi/spi-rzv2m-csi.c
320
static inline int rzv2m_csi_wait_for_rx_ready(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
324
if (readl(csi->base + CSI_IFIFOL) >= csi->bytes_to_transfer)
drivers/spi/spi-rzv2m-csi.c
327
ret = rzv2m_csi_wait_for_interrupt(csi, CSI_INT_R_TRGR,
drivers/spi/spi-rzv2m-csi.c
330
csi->errors |= RX_TIMEOUT_ERROR;
drivers/spi/spi-rzv2m-csi.c
337
struct rzv2m_csi_priv *csi = data;
drivers/spi/spi-rzv2m-csi.c
339
csi->status = readl(csi->base + CSI_INT);
drivers/spi/spi-rzv2m-csi.c
340
rzv2m_csi_disable_irqs(csi, csi->status);
drivers/spi/spi-rzv2m-csi.c
342
if (csi->status & CSI_INT_OVERF)
drivers/spi/spi-rzv2m-csi.c
343
csi->errors |= OVERFLOW_ERROR;
drivers/spi/spi-rzv2m-csi.c
344
if (csi->status & CSI_INT_UNDER)
drivers/spi/spi-rzv2m-csi.c
345
csi->errors |= UNDERRUN_ERROR;
drivers/spi/spi-rzv2m-csi.c
347
wake_up(&csi->wait);
drivers/spi/spi-rzv2m-csi.c
352
static void rzv2m_csi_setup_clock(struct rzv2m_csi_priv *csi, u32 spi_hz)
drivers/spi/spi-rzv2m-csi.c
354
unsigned long csiclk_rate = clk_get_rate(csi->csiclk);
drivers/spi/spi-rzv2m-csi.c
355
unsigned long pclk_rate = clk_get_rate(csi->pclk);
drivers/spi/spi-rzv2m-csi.c
364
clk_set_rate(csi->csiclk, csiclk_rate >> 1);
drivers/spi/spi-rzv2m-csi.c
365
csiclk_rate = clk_get_rate(csi->csiclk);
drivers/spi/spi-rzv2m-csi.c
367
clk_set_rate(csi->csiclk, csiclk_rate << 1);
drivers/spi/spi-rzv2m-csi.c
368
csiclk_rate = clk_get_rate(csi->csiclk);
drivers/spi/spi-rzv2m-csi.c
377
dev_dbg(csi->dev, "SPI clk rate is %ldHz\n", csiclk_rate / (cks << 1));
drivers/spi/spi-rzv2m-csi.c
379
rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_CKS, cks);
drivers/spi/spi-rzv2m-csi.c
382
static void rzv2m_csi_setup_operating_mode(struct rzv2m_csi_priv *csi,
drivers/spi/spi-rzv2m-csi.c
387
rzv2m_csi_reg_write_bit(csi, CSI_MODE, CSI_MODE_TRMD, 0);
drivers/spi/spi-rzv2m-csi.c
390
rzv2m_csi_reg_write_bit(csi, CSI_MODE, CSI_MODE_TRMD, 1);
drivers/spi/spi-rzv2m-csi.c
392
csi->bytes_per_word = t->bits_per_word / 8;
drivers/spi/spi-rzv2m-csi.c
393
rzv2m_csi_reg_write_bit(csi, CSI_MODE, CSI_MODE_CCL,
drivers/spi/spi-rzv2m-csi.c
394
csi->bytes_per_word == 2);
drivers/spi/spi-rzv2m-csi.c
399
struct rzv2m_csi_priv *csi = spi_controller_get_devdata(spi->controller);
drivers/spi/spi-rzv2m-csi.c
403
rzv2m_csi_sw_reset(csi, 0);
drivers/spi/spi-rzv2m-csi.c
405
writel(CSI_MODE_SETUP, csi->base + CSI_MODE);
drivers/spi/spi-rzv2m-csi.c
408
rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_MODE,
drivers/spi/spi-rzv2m-csi.c
412
rzv2m_csi_reg_write_bit(csi, CSI_MODE, CSI_MODE_DIR,
drivers/spi/spi-rzv2m-csi.c
416
rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_SLAVE,
drivers/spi/spi-rzv2m-csi.c
417
!!spi_controller_is_target(csi->controller));
drivers/spi/spi-rzv2m-csi.c
419
if (csi->use_ss_pin)
drivers/spi/spi-rzv2m-csi.c
425
rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_SS, slave_selection);
drivers/spi/spi-rzv2m-csi.c
428
ret = rzv2m_csi_sw_reset(csi, 1);
drivers/spi/spi-rzv2m-csi.c
431
rzv2m_csi_sw_reset(csi, 0);
drivers/spi/spi-rzv2m-csi.c
437
rzv2m_csi_start_stop_operation(csi, 1, false);
drivers/spi/spi-rzv2m-csi.c
439
rzv2m_csi_start_stop_operation(csi, 0, false);
drivers/spi/spi-rzv2m-csi.c
444
static int rzv2m_csi_pio_transfer(struct rzv2m_csi_priv *csi)
drivers/spi/spi-rzv2m-csi.c
446
bool tx_completed = !csi->txbuf;
drivers/spi/spi-rzv2m-csi.c
447
bool rx_completed = !csi->rxbuf;
drivers/spi/spi-rzv2m-csi.c
451
writel(0, csi->base + CSI_OFIFOL);
drivers/spi/spi-rzv2m-csi.c
454
writel(0, csi->base + CSI_IFIFOL);
drivers/spi/spi-rzv2m-csi.c
456
csi->bytes_sent = 0;
drivers/spi/spi-rzv2m-csi.c
457
csi->bytes_received = 0;
drivers/spi/spi-rzv2m-csi.c
458
csi->errors = 0;
drivers/spi/spi-rzv2m-csi.c
459
csi->target_aborted = false;
drivers/spi/spi-rzv2m-csi.c
461
rzv2m_csi_disable_all_irqs(csi);
drivers/spi/spi-rzv2m-csi.c
462
rzv2m_csi_clear_all_irqs(csi);
drivers/spi/spi-rzv2m-csi.c
463
rzv2m_csi_enable_rx_trigger(csi, true);
drivers/spi/spi-rzv2m-csi.c
473
rzv2m_csi_calc_current_transfer(csi);
drivers/spi/spi-rzv2m-csi.c
474
rzv2m_csi_set_rx_fifo_trigger_level(csi);
drivers/spi/spi-rzv2m-csi.c
476
rzv2m_csi_enable_irqs(csi, CSI_INT_OVERF | CSI_INT_UNDER);
drivers/spi/spi-rzv2m-csi.c
478
writel(readl(csi->base + CSI_INT), csi->base + CSI_INT);
drivers/spi/spi-rzv2m-csi.c
479
csi->status = 0;
drivers/spi/spi-rzv2m-csi.c
482
if (csi->txbuf) {
drivers/spi/spi-rzv2m-csi.c
483
ret = rzv2m_csi_fill_txfifo(csi);
drivers/spi/spi-rzv2m-csi.c
487
if (csi->bytes_sent == csi->buffer_len)
drivers/spi/spi-rzv2m-csi.c
491
rzv2m_csi_start_stop_operation(csi, 1, false);
drivers/spi/spi-rzv2m-csi.c
498
ret = rzv2m_csi_wait_for_rx_ready(csi);
drivers/spi/spi-rzv2m-csi.c
502
if (!spi_controller_is_target(csi->controller))
drivers/spi/spi-rzv2m-csi.c
503
rzv2m_csi_start_stop_operation(csi, 0, false);
drivers/spi/spi-rzv2m-csi.c
506
if (csi->rxbuf) {
drivers/spi/spi-rzv2m-csi.c
507
ret = rzv2m_csi_read_rxfifo(csi);
drivers/spi/spi-rzv2m-csi.c
511
if (csi->bytes_received == csi->buffer_len)
drivers/spi/spi-rzv2m-csi.c
514
rzv2m_csi_empty_rxfifo(csi);
drivers/spi/spi-rzv2m-csi.c
517
if (csi->errors) {
drivers/spi/spi-rzv2m-csi.c
523
rzv2m_csi_start_stop_operation(csi, 0, true);
drivers/spi/spi-rzv2m-csi.c
524
rzv2m_csi_disable_all_irqs(csi);
drivers/spi/spi-rzv2m-csi.c
525
rzv2m_csi_enable_rx_trigger(csi, false);
drivers/spi/spi-rzv2m-csi.c
526
rzv2m_csi_clear_all_irqs(csi);
drivers/spi/spi-rzv2m-csi.c
535
struct rzv2m_csi_priv *csi = spi_controller_get_devdata(controller);
drivers/spi/spi-rzv2m-csi.c
536
struct device *dev = csi->dev;
drivers/spi/spi-rzv2m-csi.c
539
csi->txbuf = transfer->tx_buf;
drivers/spi/spi-rzv2m-csi.c
540
csi->rxbuf = transfer->rx_buf;
drivers/spi/spi-rzv2m-csi.c
541
csi->buffer_len = transfer->len;
drivers/spi/spi-rzv2m-csi.c
543
rzv2m_csi_setup_operating_mode(csi, transfer);
drivers/spi/spi-rzv2m-csi.c
545
if (!spi_controller_is_target(csi->controller))
drivers/spi/spi-rzv2m-csi.c
546
rzv2m_csi_setup_clock(csi, transfer->speed_hz);
drivers/spi/spi-rzv2m-csi.c
548
ret = rzv2m_csi_pio_transfer(csi);
drivers/spi/spi-rzv2m-csi.c
550
if (csi->errors & UNDERRUN_ERROR)
drivers/spi/spi-rzv2m-csi.c
552
if (csi->errors & OVERFLOW_ERROR)
drivers/spi/spi-rzv2m-csi.c
554
if (csi->errors & TX_TIMEOUT_ERROR)
drivers/spi/spi-rzv2m-csi.c
556
if (csi->errors & RX_TIMEOUT_ERROR)
drivers/spi/spi-rzv2m-csi.c
565
struct rzv2m_csi_priv *csi = spi_controller_get_devdata(ctlr);
drivers/spi/spi-rzv2m-csi.c
567
csi->target_aborted = true;
drivers/spi/spi-rzv2m-csi.c
568
wake_up(&csi->wait);
drivers/spi/spi-rzv2m-csi.c
578
struct rzv2m_csi_priv *csi;
drivers/spi/spi-rzv2m-csi.c
587
controller = devm_spi_alloc_target(dev, sizeof(*csi));
drivers/spi/spi-rzv2m-csi.c
589
controller = devm_spi_alloc_host(dev, sizeof(*csi));
drivers/spi/spi-rzv2m-csi.c
594
csi = spi_controller_get_devdata(controller);
drivers/spi/spi-rzv2m-csi.c
595
platform_set_drvdata(pdev, csi);
drivers/spi/spi-rzv2m-csi.c
597
csi->use_ss_pin = false;
drivers/spi/spi-rzv2m-csi.c
600
csi->use_ss_pin = true;
drivers/spi/spi-rzv2m-csi.c
602
csi->dev = dev;
drivers/spi/spi-rzv2m-csi.c
603
csi->controller = controller;
drivers/spi/spi-rzv2m-csi.c
604
csi->target_aborted = false;
drivers/spi/spi-rzv2m-csi.c
606
csi->base = devm_platform_ioremap_resource(pdev, 0);
drivers/spi/spi-rzv2m-csi.c
607
if (IS_ERR(csi->base))
drivers/spi/spi-rzv2m-csi.c
608
return PTR_ERR(csi->base);
drivers/spi/spi-rzv2m-csi.c
614
csi->csiclk = devm_clk_get(dev, "csiclk");
drivers/spi/spi-rzv2m-csi.c
615
if (IS_ERR(csi->csiclk))
drivers/spi/spi-rzv2m-csi.c
616
return dev_err_probe(dev, PTR_ERR(csi->csiclk),
drivers/spi/spi-rzv2m-csi.c
619
csi->pclk = devm_clk_get(dev, "pclk");
drivers/spi/spi-rzv2m-csi.c
620
if (IS_ERR(csi->pclk))
drivers/spi/spi-rzv2m-csi.c
621
return dev_err_probe(dev, PTR_ERR(csi->pclk),
drivers/spi/spi-rzv2m-csi.c
628
init_waitqueue_head(&csi->wait);
drivers/spi/spi-rzv2m-csi.c
638
dev_name(dev), csi);
drivers/spi/spi-rzv2m-csi.c
650
ret = rzv2m_csi_sw_reset(csi, 1);
drivers/spi/spi-rzv2m-csi.c
654
ret = clk_prepare_enable(csi->csiclk);
drivers/spi/spi-rzv2m-csi.c
660
clk_disable_unprepare(csi->csiclk);
drivers/spi/spi-rzv2m-csi.c
669
struct rzv2m_csi_priv *csi = platform_get_drvdata(pdev);
drivers/spi/spi-rzv2m-csi.c
671
spi_unregister_controller(csi->controller);
drivers/spi/spi-rzv2m-csi.c
672
rzv2m_csi_sw_reset(csi, 1);
drivers/spi/spi-rzv2m-csi.c
673
clk_disable_unprepare(csi->csiclk);
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
970
struct camera_mipi_info *csi;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
972
csi = kzalloc_obj(*csi);
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
973
if (!csi)
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
976
csi->port = port;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
977
csi->num_lanes = lanes;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
978
csi->input_format = format;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
979
csi->raw_bayer_order = bayer_order;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
980
v4l2_set_subdev_hostdata(sd, csi);
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
981
csi->metadata_format = ATOMISP_INPUT_FORMAT_EMBEDDED;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
982
csi->metadata_effective_width = NULL;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
992
struct camera_mipi_info *csi;
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
994
csi = v4l2_get_subdev_hostdata(sd);
drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
995
kfree(csi);
drivers/staging/media/imx/imx-ic-prp.c
296
struct v4l2_subdev *csi;
drivers/staging/media/imx/imx-ic-prp.c
304
csi = imx_media_pipeline_subdev(&ic_priv->sd.entity,
drivers/staging/media/imx/imx-ic-prp.c
306
if (IS_ERR(csi))
drivers/staging/media/imx/imx-ic-prp.c
307
csi = NULL;
drivers/staging/media/imx/imx-ic-prp.c
322
if (!csi) {
drivers/staging/media/imx/imx-ic-prp.c
328
if (csi) {
drivers/staging/media/imx/imx-ic-prp.c
329
switch (csi->grp_id) {
drivers/staging/media/imx/imx-media-csi.c
1151
ipu_csi_set_mipi_datatype(priv->csi, 0,
drivers/staging/media/imx/imx-media-csi.c
1757
struct ipu_csi *csi;
drivers/staging/media/imx/imx-media-csi.c
1762
csi = ipu_csi_get(priv->ipu, priv->csi_id);
drivers/staging/media/imx/imx-media-csi.c
1763
if (IS_ERR(csi)) {
drivers/staging/media/imx/imx-media-csi.c
1765
return PTR_ERR(csi);
drivers/staging/media/imx/imx-media-csi.c
1767
priv->csi = csi;
drivers/staging/media/imx/imx-media-csi.c
1821
ipu_csi_put(priv->csi);
drivers/staging/media/imx/imx-media-csi.c
1835
if (priv->csi)
drivers/staging/media/imx/imx-media-csi.c
1836
ipu_csi_put(priv->csi);
drivers/staging/media/imx/imx-media-csi.c
1985
priv->csi_id = pdata->csi;
drivers/staging/media/imx/imx-media-csi.c
727
ipu_csi_set_window(priv->csi, &crop);
drivers/staging/media/imx/imx-media-csi.c
729
ipu_csi_set_downsize(priv->csi,
drivers/staging/media/imx/imx-media-csi.c
733
ipu_csi_init_interface(priv->csi, &priv->mbus_cfg, &if_fmt, outfmt);
drivers/staging/media/imx/imx-media-csi.c
735
ipu_csi_set_dest(priv->csi, priv->dest);
drivers/staging/media/imx/imx-media-csi.c
738
ipu_csi_set_skip_smfc(priv->csi, priv->skip->skip_smfc,
drivers/staging/media/imx/imx-media-csi.c
741
ipu_csi_dump(priv->csi);
drivers/staging/media/imx/imx-media-csi.c
76
struct ipu_csi *csi;
drivers/staging/media/imx/imx-media-csi.c
785
ret = ipu_csi_enable(priv->csi);
drivers/staging/media/imx/imx-media-csi.c
814
ipu_csi_disable(priv->csi);
drivers/staging/media/imx/imx-media-internal-sd.c
191
struct v4l2_subdev *csi)
drivers/staging/media/imx/imx-media-internal-sd.c
193
struct device *ipu_dev = csi->dev->parent;
drivers/staging/media/imx/imx-media-internal-sd.c
249
if (intsd->grp_id == csi->grp_id) {
drivers/staging/media/imx/imx-media-internal-sd.c
250
sd = csi;
drivers/staging/media/imx/imx-media.h
248
struct v4l2_subdev *csi);
drivers/staging/media/tegra-video/csi.c
100
frmrate = csi->soc->tpg_frmrate_table;
drivers/staging/media/tegra-video/csi.c
101
for (i = 0; i < csi->soc->tpg_frmrate_table_size; i++) {
drivers/staging/media/tegra-video/csi.c
115
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/csi.c
116
const struct tpg_framerate *frmrate = csi->soc->tpg_frmrate_table;
drivers/staging/media/tegra-video/csi.c
119
index = csi_get_frmrate_table_index(csi_chan->csi, code,
drivers/staging/media/tegra-video/csi.c
160
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/csi.c
161
const struct tpg_framerate *frmrate = csi->soc->tpg_frmrate_table;
drivers/staging/media/tegra-video/csi.c
171
index = csi_get_frmrate_table_index(csi_chan->csi, fie->code,
drivers/staging/media/tegra-video/csi.c
267
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/csi.c
272
cil_clk_mhz = clk_get_rate(csi->clks[clk_idx].clk) / MHZ;
drivers/staging/media/tegra-video/csi.c
305
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/csi.c
308
ret = pm_runtime_resume_and_get(csi->dev);
drivers/staging/media/tegra-video/csi.c
310
dev_err(csi->dev, "failed to get runtime PM: %d\n", ret);
drivers/staging/media/tegra-video/csi.c
317
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
331
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
344
ret = csi->ops->csi_start_streaming(csi_chan);
drivers/staging/media/tegra-video/csi.c
367
dev_warn(csi->dev, "MIPI calibration failed: %d\n", err);
drivers/staging/media/tegra-video/csi.c
373
csi->ops->csi_stop_streaming(csi_chan);
drivers/staging/media/tegra-video/csi.c
381
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
386
pm_runtime_put(csi->dev);
drivers/staging/media/tegra-video/csi.c
394
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/csi.c
407
dev_err_probe(csi->dev, err, "source subdev stream off failed\n");
drivers/staging/media/tegra-video/csi.c
410
csi->ops->csi_stop_streaming(csi_chan);
drivers/staging/media/tegra-video/csi.c
415
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
419
pm_runtime_put(csi->dev);
drivers/staging/media/tegra-video/csi.c
458
static int tegra_csi_channel_alloc(struct tegra_csi *csi,
drivers/staging/media/tegra-video/csi.c
470
list_add_tail(&chan->list, &csi->csi_chans);
drivers/staging/media/tegra-video/csi.c
471
chan->csi = csi;
drivers/staging/media/tegra-video/csi.c
499
chan->mipi = tegra_mipi_request(csi->dev, node);
drivers/staging/media/tegra-video/csi.c
503
dev_err(csi->dev, "failed to get mipi device: %d\n", ret);
drivers/staging/media/tegra-video/csi.c
509
static int tegra_csi_tpg_channels_alloc(struct tegra_csi *csi)
drivers/staging/media/tegra-video/csi.c
511
struct device_node *node = csi->dev->of_node;
drivers/staging/media/tegra-video/csi.c
513
unsigned int tpg_channels = csi->soc->csi_max_channels;
drivers/staging/media/tegra-video/csi.c
518
ret = tegra_csi_channel_alloc(csi, node, port_num, 2, 1);
drivers/staging/media/tegra-video/csi.c
526
static int tegra_csi_channels_alloc(struct tegra_csi *csi)
drivers/staging/media/tegra-video/csi.c
528
struct device_node *node = csi->dev->of_node;
drivers/staging/media/tegra-video/csi.c
546
if (portno >= csi->soc->csi_max_channels) {
drivers/staging/media/tegra-video/csi.c
547
dev_err(csi->dev, "invalid port num %d for %pOF\n",
drivers/staging/media/tegra-video/csi.c
561
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
576
dev_err(csi->dev, "invalid data-lanes %d for %pOF\n",
drivers/staging/media/tegra-video/csi.c
584
ret = tegra_csi_channel_alloc(csi, channel, portno,
drivers/staging/media/tegra-video/csi.c
600
struct tegra_csi *csi = chan->csi;
drivers/staging/media/tegra-video/csi.c
616
subdev->dev = csi->dev;
drivers/staging/media/tegra-video/csi.c
632
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
641
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
653
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/csi.c
656
csi->ops->csi_stop_streaming(csi_chan);
drivers/staging/media/tegra-video/csi.c
657
csi->ops->csi_err_recover(csi_chan);
drivers/staging/media/tegra-video/csi.c
658
csi->ops->csi_start_streaming(csi_chan);
drivers/staging/media/tegra-video/csi.c
661
static int tegra_csi_channels_init(struct tegra_csi *csi)
drivers/staging/media/tegra-video/csi.c
666
list_for_each_entry(chan, &csi->csi_chans, list) {
drivers/staging/media/tegra-video/csi.c
669
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
679
static void tegra_csi_channels_cleanup(struct tegra_csi *csi)
drivers/staging/media/tegra-video/csi.c
684
list_for_each_entry_safe(chan, tmp, &csi->csi_chans, list) {
drivers/staging/media/tegra-video/csi.c
703
struct tegra_csi *csi = dev_get_drvdata(dev);
drivers/staging/media/tegra-video/csi.c
705
clk_bulk_disable_unprepare(csi->soc->num_clks, csi->clks);
drivers/staging/media/tegra-video/csi.c
712
struct tegra_csi *csi = dev_get_drvdata(dev);
drivers/staging/media/tegra-video/csi.c
715
ret = clk_bulk_prepare_enable(csi->soc->num_clks, csi->clks);
drivers/staging/media/tegra-video/csi.c
717
dev_err(csi->dev, "failed to enable clocks: %d\n", ret);
drivers/staging/media/tegra-video/csi.c
726
struct tegra_csi *csi = host1x_client_to_csi(client);
drivers/staging/media/tegra-video/csi.c
730
INIT_LIST_HEAD(&csi->csi_chans);
drivers/staging/media/tegra-video/csi.c
733
ret = tegra_csi_tpg_channels_alloc(csi);
drivers/staging/media/tegra-video/csi.c
735
ret = tegra_csi_channels_alloc(csi);
drivers/staging/media/tegra-video/csi.c
737
dev_err(csi->dev,
drivers/staging/media/tegra-video/csi.c
742
ret = tegra_csi_channels_init(csi);
drivers/staging/media/tegra-video/csi.c
746
vid->csi = csi;
drivers/staging/media/tegra-video/csi.c
751
tegra_csi_channels_cleanup(csi);
drivers/staging/media/tegra-video/csi.c
757
struct tegra_csi *csi = host1x_client_to_csi(client);
drivers/staging/media/tegra-video/csi.c
759
tegra_csi_channels_cleanup(csi);
drivers/staging/media/tegra-video/csi.c
771
struct tegra_csi *csi;
drivers/staging/media/tegra-video/csi.c
775
csi = devm_kzalloc(&pdev->dev, sizeof(*csi), GFP_KERNEL);
drivers/staging/media/tegra-video/csi.c
776
if (!csi)
drivers/staging/media/tegra-video/csi.c
779
csi->iomem = devm_platform_ioremap_resource(pdev, 0);
drivers/staging/media/tegra-video/csi.c
780
if (IS_ERR(csi->iomem))
drivers/staging/media/tegra-video/csi.c
781
return PTR_ERR(csi->iomem);
drivers/staging/media/tegra-video/csi.c
783
csi->soc = of_device_get_match_data(&pdev->dev);
drivers/staging/media/tegra-video/csi.c
785
csi->clks = devm_kcalloc(&pdev->dev, csi->soc->num_clks,
drivers/staging/media/tegra-video/csi.c
786
sizeof(*csi->clks), GFP_KERNEL);
drivers/staging/media/tegra-video/csi.c
787
if (!csi->clks)
drivers/staging/media/tegra-video/csi.c
790
for (i = 0; i < csi->soc->num_clks; i++)
drivers/staging/media/tegra-video/csi.c
791
csi->clks[i].id = csi->soc->clk_names[i];
drivers/staging/media/tegra-video/csi.c
793
ret = devm_clk_bulk_get(&pdev->dev, csi->soc->num_clks, csi->clks);
drivers/staging/media/tegra-video/csi.c
805
csi->dev = &pdev->dev;
drivers/staging/media/tegra-video/csi.c
806
csi->ops = csi->soc->ops;
drivers/staging/media/tegra-video/csi.c
807
platform_set_drvdata(pdev, csi);
drivers/staging/media/tegra-video/csi.c
811
INIT_LIST_HEAD(&csi->client.list);
drivers/staging/media/tegra-video/csi.c
812
csi->client.ops = &csi_client_ops;
drivers/staging/media/tegra-video/csi.c
813
csi->client.dev = &pdev->dev;
drivers/staging/media/tegra-video/csi.c
815
ret = host1x_client_register(&csi->client);
drivers/staging/media/tegra-video/csi.c
831
struct tegra_csi *csi = platform_get_drvdata(pdev);
drivers/staging/media/tegra-video/csi.c
833
host1x_client_unregister(&csi->client);
drivers/staging/media/tegra-video/csi.c
94
static int csi_get_frmrate_table_index(struct tegra_csi *csi, u32 code,
drivers/staging/media/tegra-video/csi.h
67
struct tegra_csi *csi;
drivers/staging/media/tegra-video/tegra210.c
1002
cil_write(csi, portno + 1, TEGRA_CSI_CIL_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
1003
cil_write(csi, portno + 1, TEGRA_CSI_CILX_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
1004
cil_write(csi, portno + 1, TEGRA_CSI_CIL_INTERRUPT_MASK, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1006
cil_write(csi, portno, TEGRA_CSI_CIL_PAD_CONFIG0,
drivers/staging/media/tegra-video/tegra210.c
1008
cil_write(csi, portno + 1, TEGRA_CSI_CIL_PAD_CONFIG0, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1009
cil_write(csi, portno + 1, TEGRA_CSI_CIL_INTERRUPT_MASK, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1010
cil_write(csi, portno + 1, TEGRA_CSI_CIL_PHY_CONTROL,
drivers/staging/media/tegra-video/tegra210.c
1013
csi_write(csi, portno, TEGRA_CSI_PHY_CIL_COMMAND,
drivers/staging/media/tegra-video/tegra210.c
1019
csi_write(csi, portno, TEGRA_CSI_PHY_CIL_COMMAND, val);
drivers/staging/media/tegra-video/tegra210.c
1023
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_PP_COMMAND,
drivers/staging/media/tegra-video/tegra210.c
1026
pp_write(csi, portno, TEGRA_CSI_PIXEL_PARSER_INTERRUPT_MASK, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1027
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_CONTROL0,
drivers/staging/media/tegra-video/tegra210.c
1035
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_CONTROL1,
drivers/staging/media/tegra-video/tegra210.c
1038
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_GAP,
drivers/staging/media/tegra-video/tegra210.c
1040
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_EXPECTED_FRAME, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1041
pp_write(csi, portno, TEGRA_CSI_INPUT_STREAM_CONTROL,
drivers/staging/media/tegra-video/tegra210.c
1047
tpg_write(csi, portno, TEGRA_CSI_PATTERN_GENERATOR_CTRL,
drivers/staging/media/tegra-video/tegra210.c
1050
tpg_write(csi, portno, TEGRA_CSI_PG_BLANK,
drivers/staging/media/tegra-video/tegra210.c
1053
tpg_write(csi, portno, TEGRA_CSI_PG_PHASE, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1054
tpg_write(csi, portno, TEGRA_CSI_PG_RED_FREQ,
drivers/staging/media/tegra-video/tegra210.c
1057
tpg_write(csi, portno, TEGRA_CSI_PG_RED_FREQ_RATE, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1058
tpg_write(csi, portno, TEGRA_CSI_PG_GREEN_FREQ,
drivers/staging/media/tegra-video/tegra210.c
1061
tpg_write(csi, portno, TEGRA_CSI_PG_GREEN_FREQ_RATE, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1062
tpg_write(csi, portno, TEGRA_CSI_PG_BLUE_FREQ,
drivers/staging/media/tegra-video/tegra210.c
1065
tpg_write(csi, portno, TEGRA_CSI_PG_BLUE_FREQ_RATE, 0x0);
drivers/staging/media/tegra-video/tegra210.c
1068
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_PP_COMMAND,
drivers/staging/media/tegra-video/tegra210.c
1078
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/tegra210.c
1081
val = pp_read(csi, portno, TEGRA_CSI_PIXEL_PARSER_STATUS);
drivers/staging/media/tegra-video/tegra210.c
1083
dev_dbg(csi->dev, "TEGRA_CSI_PIXEL_PARSER_STATUS 0x%08x\n", val);
drivers/staging/media/tegra-video/tegra210.c
1084
pp_write(csi, portno, TEGRA_CSI_PIXEL_PARSER_STATUS, val);
drivers/staging/media/tegra-video/tegra210.c
1086
val = cil_read(csi, portno, TEGRA_CSI_CIL_STATUS);
drivers/staging/media/tegra-video/tegra210.c
1087
dev_dbg(csi->dev, "TEGRA_CSI_CIL_STATUS 0x%08x\n", val);
drivers/staging/media/tegra-video/tegra210.c
1088
cil_write(csi, portno, TEGRA_CSI_CIL_STATUS, val);
drivers/staging/media/tegra-video/tegra210.c
1090
val = cil_read(csi, portno, TEGRA_CSI_CILX_STATUS);
drivers/staging/media/tegra-video/tegra210.c
1091
dev_dbg(csi->dev, "TEGRA_CSI_CILX_STATUS 0x%08x\n", val);
drivers/staging/media/tegra-video/tegra210.c
1092
cil_write(csi, portno, TEGRA_CSI_CILX_STATUS, val);
drivers/staging/media/tegra-video/tegra210.c
1094
pp_write(csi, portno, TEGRA_CSI_PIXEL_STREAM_PP_COMMAND,
drivers/staging/media/tegra-video/tegra210.c
1099
tpg_write(csi, portno, TEGRA_CSI_PATTERN_GENERATOR_CTRL,
drivers/staging/media/tegra-video/tegra210.c
1105
csi_write(csi, portno, TEGRA_CSI_PHY_CIL_COMMAND,
drivers/staging/media/tegra-video/tegra210.c
1112
csi_write(csi, portno, TEGRA_CSI_PHY_CIL_COMMAND, val);
drivers/staging/media/tegra-video/tegra210.c
830
static void csi_write(struct tegra_csi *csi, u8 portno, unsigned int addr,
drivers/staging/media/tegra-video/tegra210.c
835
csi_pp_base = csi->iomem + CSI_PP_OFFSET(portno >> 1);
drivers/staging/media/tegra-video/tegra210.c
841
static void pp_write(struct tegra_csi *csi, u8 portno, u32 addr, u32 val)
drivers/staging/media/tegra-video/tegra210.c
846
csi_pp_base = csi->iomem + CSI_PP_OFFSET(portno >> 1);
drivers/staging/media/tegra-video/tegra210.c
852
static u32 pp_read(struct tegra_csi *csi, u8 portno, u32 addr)
drivers/staging/media/tegra-video/tegra210.c
857
csi_pp_base = csi->iomem + CSI_PP_OFFSET(portno >> 1);
drivers/staging/media/tegra-video/tegra210.c
864
static void cil_write(struct tegra_csi *csi, u8 portno, u32 addr, u32 val)
drivers/staging/media/tegra-video/tegra210.c
869
csi_cil_base = csi->iomem + CSI_PP_OFFSET(portno >> 1) +
drivers/staging/media/tegra-video/tegra210.c
876
static u32 cil_read(struct tegra_csi *csi, u8 portno, u32 addr)
drivers/staging/media/tegra-video/tegra210.c
881
csi_cil_base = csi->iomem + CSI_PP_OFFSET(portno >> 1) +
drivers/staging/media/tegra-video/tegra210.c
889
static void tpg_write(struct tegra_csi *csi, u8 portno, unsigned int addr,
drivers/staging/media/tegra-video/tegra210.c
895
csi_pp_base = csi->iomem + CSI_PP_OFFSET(portno >> 1);
drivers/staging/media/tegra-video/tegra210.c
908
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/tegra210.c
916
val = pp_read(csi, portno, TEGRA_CSI_PIXEL_PARSER_STATUS);
drivers/staging/media/tegra-video/tegra210.c
917
dev_dbg(csi->dev, "TEGRA_CSI_PIXEL_PARSER_STATUS 0x%08x\n", val);
drivers/staging/media/tegra-video/tegra210.c
919
val = cil_read(csi, portno, TEGRA_CSI_CIL_STATUS);
drivers/staging/media/tegra-video/tegra210.c
920
dev_dbg(csi->dev, "TEGRA_CSI_CIL_STATUS 0x%08x\n", val);
drivers/staging/media/tegra-video/tegra210.c
922
val = cil_read(csi, portno, TEGRA_CSI_CILX_STATUS);
drivers/staging/media/tegra-video/tegra210.c
923
dev_dbg(csi->dev, "TEGRA_CSI_CILX_STATUS 0x%08x\n", val);
drivers/staging/media/tegra-video/tegra210.c
927
cil_write(csi, portno, TEGRA_CSI_CIL_SW_SENSOR_RESET, 0x1);
drivers/staging/media/tegra-video/tegra210.c
928
cil_write(csi, portno + 1, TEGRA_CSI_CIL_SW_SENSOR_RESET, 0x1);
drivers/staging/media/tegra-video/tegra210.c
935
csi_write(csi, portno, TEGRA_CSI_CSI_SW_STATUS_RESET, 0x1);
drivers/staging/media/tegra-video/tegra210.c
940
cil_write(csi, portno + 1, TEGRA_CSI_CIL_SW_SENSOR_RESET, 0x0);
drivers/staging/media/tegra-video/tegra210.c
941
cil_write(csi, portno, TEGRA_CSI_CIL_SW_SENSOR_RESET, 0x0);
drivers/staging/media/tegra-video/tegra210.c
942
csi_write(csi, portno, TEGRA_CSI_CSI_SW_STATUS_RESET, 0x0);
drivers/staging/media/tegra-video/tegra210.c
945
cil_write(csi, portno, TEGRA_CSI_CIL_SW_SENSOR_RESET, 0x1);
drivers/staging/media/tegra-video/tegra210.c
947
cil_write(csi, portno, TEGRA_CSI_CIL_SW_SENSOR_RESET, 0x0);
drivers/staging/media/tegra-video/tegra210.c
950
pp_write(csi, portno, TEGRA_CSI_PIXEL_PARSER_STATUS,
drivers/staging/media/tegra-video/tegra210.c
952
cil_write(csi, portno, TEGRA_CSI_CIL_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
953
cil_write(csi, portno, TEGRA_CSI_CILX_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
970
struct tegra_csi *csi = csi_chan->csi;
drivers/staging/media/tegra-video/tegra210.c
979
csi_write(csi, portno, TEGRA_CSI_CLKEN_OVERRIDE, 0);
drivers/staging/media/tegra-video/tegra210.c
982
pp_write(csi, portno, TEGRA_CSI_PIXEL_PARSER_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
983
cil_write(csi, portno, TEGRA_CSI_CIL_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
984
cil_write(csi, portno, TEGRA_CSI_CILX_STATUS, 0xffffffff);
drivers/staging/media/tegra-video/tegra210.c
985
cil_write(csi, portno, TEGRA_CSI_CIL_INTERRUPT_MASK, 0x0);
drivers/staging/media/tegra-video/tegra210.c
988
cil_write(csi, portno, TEGRA_CSI_CIL_PAD_CONFIG0, 0x0);
drivers/staging/media/tegra-video/tegra210.c
989
cil_write(csi, portno, TEGRA_CSI_CIL_PHY_CONTROL,
drivers/staging/media/tegra-video/vi.c
1340
struct tegra_csi *csi = vid->csi;
drivers/staging/media/tegra-video/vi.c
1347
list_for_each_entry(csi_chan, &csi->csi_chans, list)
drivers/staging/media/tegra-video/vi.c
1354
struct tegra_csi *csi = vid->csi;
drivers/staging/media/tegra-video/vi.c
1360
if (!vi || !csi)
drivers/staging/media/tegra-video/vi.c
1363
csi_chan = list_first_entry(&csi->csi_chans,
drivers/staging/media/tegra-video/video.h
20
struct tegra_csi *csi;
include/linux/nvme.h
1455
__u8 csi;
include/linux/nvme.h
1571
__u8 csi;
include/video/imx-ipu-v3.h
358
int ipu_csi_init_interface(struct ipu_csi *csi,
include/video/imx-ipu-v3.h
362
void ipu_csi_set_window(struct ipu_csi *csi, struct v4l2_rect *w);
include/video/imx-ipu-v3.h
363
void ipu_csi_set_downsize(struct ipu_csi *csi, bool horiz, bool vert);
include/video/imx-ipu-v3.h
364
int ipu_csi_set_mipi_datatype(struct ipu_csi *csi, u32 vc,
include/video/imx-ipu-v3.h
366
int ipu_csi_set_skip_smfc(struct ipu_csi *csi, u32 skip,
include/video/imx-ipu-v3.h
368
int ipu_csi_set_dest(struct ipu_csi *csi, enum ipu_csi_dest csi_dest);
include/video/imx-ipu-v3.h
369
int ipu_csi_enable(struct ipu_csi *csi);
include/video/imx-ipu-v3.h
370
int ipu_csi_disable(struct ipu_csi *csi);
include/video/imx-ipu-v3.h
372
void ipu_csi_put(struct ipu_csi *csi);
include/video/imx-ipu-v3.h
373
void ipu_csi_dump(struct ipu_csi *csi);
include/video/imx-ipu-v3.h
481
int csi;